我正在将代码从使用 Handler
改为 AsyncTask
。后者在异步更新和在主UI线程中处理结果方面表现很好。但是,如果在 AsyncTask#doInBackground
中出现问题,我不清楚如何处理异常。
我的做法是创建一个错误处理程序并向其发送消息。这个方法运行良好,但是这是否是“正确”的方法或者是否有更好的替代方法?
此外,我知道如果将错误处理程序定义为 Activity 字段,则应在 UI 线程中执行。然而,有时(非常难以预测)我会收到一个异常,表示从 Handler#handleMessage
触发的代码正在错误的线程上执行。我应该在 Activity#onCreate
中初始化错误处理程序吗?将 runOnUiThread
放入 Handler#handleMessage
中似乎多余,但它运行得非常可靠。