0

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

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

2 回答 2

3

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

这里是 runOnUiThread 的文档。这里是处理程序。

于 2013-10-12T12:22:38.557 回答
1

您可以使用Handler. 只需在 UI 线程中创建它,然后从您的异步线程发布对它的调用。

例如,如果您使用的是AsyncTask,只需添加以下全局变量:

Handler mHandler;

接下来,在任务的构造函数或onPreExecute方法中,添加以下行:

mHandler = new Handler();

最后,只要在UI ThreaddoInBackground上调用了上述行,您就可以在您的方法中使用以下方法在所述 Thread 上执行代码:

mHandler.post(new Runnable() {
    @Override
    public void run() {
        if (pressTime == 0)
            displayTime.setText("You missed your ring");
    }
});
于 2013-10-12T13:06:09.597 回答