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