我正在使用Eclipse和Android编程。 AsyncThread可以与UI交互,我在后台线程中有这个代码,它会导致抛出异常:
if (pressTime == 0){
displayTime.setText("You missed your ring");
}
答案 0 :(得分:3)
只有实际创建了视图的线程(通常是UI线程)才能修改视图。您必须在UI线程队列上发布要带到UI的修改。简而言之,在您的上下文中是活动,这是通过runOnUiThread
实现的。否则,您可以使用Handler
。
答案 1 :(得分:1)
您可以使用Handler
。只需在UI线程中创建它,然后从异步线程发出对它的调用。
例如,如果您使用AsyncTask
,只需添加以下全局变量:
Handler mHandler;
接下来,在任务的构造函数或onPreExecute
方法中,添加以下行:
mHandler = new Handler();
最后,只要在 UI线程上调用上述行,就可以使用以下方法在doInBackground
方法中的所述线程上执行代码:
mHandler.post(new Runnable() {
@Override
public void run() {
if (pressTime == 0)
displayTime.setText("You missed your ring");
}
});