后台线程与UI交互

时间:2013-10-12 12:20:03

标签: java android

我正在使用Eclipse和Android编程。 AsyncThread可以与UI交互,我在后台线程中有这个代码,它会导致抛出异常:

if (pressTime == 0){
    displayTime.setText("You missed your ring");
}

2 个答案:

答案 0 :(得分:3)

只有实际创建了视图的线程(通常是UI线程)才能修改视图。您必须在UI线程队列上发布要带到UI的修改。简而言之,在您的上下文中是活动,这是通过runOnUiThread实现的。否则,您可以使用Handler

Here runOnUiThread的文档。 Handler的Here

答案 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");
    }
});