在发现 Google 重新设计了 AsyncTask 中的线程模型,现在带有一个主要的阻塞代码错误后,我选择放弃使用 AsyncTask 并简单地使用 Threads 和 Runnables,所以请不要在 AsyncTask 上发表任何评论,因为那是不是我的讨论。我想知道的是以下是否是实现在 UI 线程上运行内容的嵌套 Runnable 的正确方法:
private class MyOuterRunnable implements Runnable
{
@Override
public void run()
{
int x = 1;
// Do something on the UI thread.
runOnUiThread(new Runnable()
{
public void run()
{
// Update a listview, etc.
}
});
}
}
在大多数情况下,这似乎可行,但是我在以这种方式执行此操作的某些模块中遇到了崩溃。这是从嵌套的 Runnable 中执行 UI 内容的正确方法还是我应该以不同的方式执行它?所有 LogCat 告诉我的是嵌套可运行文件中发生了致命错误,但没有提供任何详细信息。