繁体   English   中英

后台线程与UI交互

[英]Background thread Interact with UI

我正在使用Eclipse和android编程。 AsyncThread可以与UI交互吗,我的后台线程中包含以下代码,并且会引发异常:

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

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

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

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

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

Handler mHandler;

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

mHandler = new Handler();

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

mHandler.post(new Runnable() {
    @Override
    public void run() {
        if (pressTime == 0)
            displayTime.setText("You missed your ring");
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM