在未来执行 Runnables

假设我有一个 Activity,它的方法需要 JNI 库才能工作。JNI 库是在运行时加载的,因此我们有可能在 Activity 的 onCreate()、onResume() 中获得异常(例如重新启动应用程序后),因为库尚未加载。所以,我一直在想 - 如果我将包装在 Runnable 中的代码发送到某个类中,其中包含要执行的可运行对象列表,并且该类将接收加载库(或任何其他事件)的事件,从而执行 Runnables有可能的时候。我正在尝试使用 EventBus 来实现这一点,但总是有一个例外:

E/事件:无法调度事件:com.vc.intent.EventAppStateChanged 类订阅类 com.vc.model.FutureExecutor

但这些例外并没有告诉我太多。我怎样才能找出代码究竟在哪里中断?


慕侠2389804
浏览 122回答 1
1回答

人到中年有点甜

所以,这个想法本身还不错,只是我愚蠢的大脑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 循环后简单地清除列表来解决。现在它可以工作了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java