在发现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告诉我,嵌套的runnable中发生了致命错误,但没有提供任何详细信息。