Есть ли способ вызвать универсальный метод из асинхронного потока? - PullRequest
1 голос
/ 28 мая 2019

Для того, чтобы избежать шаблонов и обработки очень специфического SDK с настроенными транзакциями API, я бы попытался передать универсальный метод, который будет вызываться и выполняться асинхронно.

Я пытался использовать RxJava, EventBus и AsyncTask.Однако всякий раз, когда он туда попадал, я всегда получал android.os.NetworkOnMainThreadException.

. Я использовал interface, который, очевидно, прекрасно работает, но мне было интересно, почему то же самое нельзя применить куниверсальный метод?Это потому, что я специально не отправляю весь объект в новый поток?

Если я отправлю экземпляр объекта, то, учитывая, что у каждого метода есть свое имя, вызывать его было бы неудобноконкретный метод (если имя не было передано как String, возможно?).

Код, который будет выполняться в новом потоке, будет представлять собой вариант следующего:

public <T> void invokeMethod(T item) throws InvocationTargetException, IllegalAccessException {
        if (item instanceof Method) {
            ((Method) item).invoke(this, (Object[]) null);
        }
    }

Очевидно, что обычно методы выполняются правильно, когда я это делаю, но они всегда выполняются на main thread.

...