Java线程消息传递

时间:2010-06-16 05:37:43

标签: java android

我正在写一个Android应用程序。我有一个main方法,它使用匿名内部Runnable类创建并运行一个新的Thread。 run()方法完成后,调用其父类(在主线程中)调用notifyDataSetChanged()的方法,以便主线程可以重绘新数据。这会造成各种麻烦(ViewRoot $ CalledFromWrongThreadException)。

问题是,从工作线程调用此方法是在UI线程中创建的类。不应该在UI线程上运行吗?或者我错过了什么?

以下是我正在谈论的一些代码:

public class Mealfire extends Activity {
    @Override
    public void onCreate(Bundle icicle) {
        (new Thread() {
            public void run() {
                // Do a bunch of slow network stuff.
                update();
            }
        }).start();
    }

    private void update() {
        myAdapter.notifyDatasetChanged();
    }
}

1 个答案:

答案 0 :(得分:2)

您是否尝试使用Activity#runOnUiThread调用UI更新代码?像这样:

private void update() {
    runOnUiThread(new Runnable() {
        public void run() {
            myAdapter.notifyDatasetChanged();
        }
    }
}