我正在写一个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();
}
}
答案 0 :(得分:2)
您是否尝试使用Activity#runOnUiThread调用UI更新代码?像这样:
private void update() {
runOnUiThread(new Runnable() {
public void run() {
myAdapter.notifyDatasetChanged();
}
}
}