有没有一种方法可以从异步线程中调用通用方法?

时间:2019-05-28 11:54:45

标签: android generics methods reflection android-asynctask

为了避免样板处理,并使用自定义的API事务处理非常特定的SDK,我将尝试传递一种通用方法,该方法将异步调用和执行。

我尝试使用RxJavaEventBusAsyncTask。 但是,无论何时到达那里,我总是会得到一个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上执行。

0 个答案:

没有答案