让我们假设我有一个Activity,该Activity包含需要JNI库起作用的方法。 JNI库是在运行时加载的,因此我们有机会在Activity的onCreate()和onResume()中获取异常(例如,在重新启动应用程序之后),因为尚未加载库。所以,我一直在想-如果我在某个类中发送包裹在Runnable中的代码,并附上要执行的Runnable列表,并且该类将接收到已加载库的事件(或任何其他事件),从而执行Runnables在可能的情况下。我正在尝试使用EventBus实现这一目标,但始终有一个例外:
E / Event:无法调度事件:类 com.vc.intent.EventAppState更改为订阅类class com.vc.model.FutureExecutor
但是这些例外并不能告诉我很多。我如何找出代码在何处中断?
答案 0 :(得分:0)
所以,这个想法本身并不坏,那只是我愚蠢的大脑xD。 EventBust没有显示导致异常的原因,因此我将代码简单地放在try-catch中:
public void onEventMainThread(EventAppStateChanged event) {
if (event.isState(AppState.NORMAL)) {
Log.i(TAG, "EventAppStateChanged (to NORMAL) received");
try {
for (Runnable runnable : toBeExecutedList) {
Log.i(TAG, "FutureExecutor executing Runnable: " + runnable);
VCEngine.getHandler().postDelayed(runnable, 10);
toBeExecutedList.remove(runnable);
}
} catch (Exception e) {
Log.e(TAG, "FutureExecutor exception: ");
e.printStackTrace();
}
}
}
我发现我在for循环中删除了一个列表元素。这可以通过使用迭代器或在for循环后清除列表来解决。现在就可以了。