Java 后台线程与UI交互
我正在使用Eclipse和android编程。AsyncThread是否可以与UI交互,我的后台线程中有此代码,它导致引发异常:Java 后台线程与UI交互,java,android,Java,Android,我正在使用Eclipse和android编程。AsyncThread是否可以与UI交互,我的后台线程中有此代码,它导致引发异常: if (pressTime == 0){ displayTime.setText("You missed your ring"); } 只有实际创建视图的线程(尤其是UI线程)才能修改视图。您必须在UI线程队列中发布要带到UI的修改。特别是,在您的上下文中是活动,这是通过runOnUiThread实现的。否则,您可以使用和处理程序 runOnUiThread
if (pressTime == 0){
displayTime.setText("You missed your ring");
}
只有实际创建视图的线程(尤其是UI线程)才能修改视图。您必须在UI线程队列中发布要带到UI的修改。特别是,在您的上下文中是活动,这是通过
runOnUiThread
实现的。否则,您可以使用和处理程序
runOnUiThread的文档。对于处理程序。只有实际创建视图的线程(尤其是UI线程)才能修改视图。您必须在UI线程队列中发布要带到UI的修改。特别是,在您的上下文中是活动,这是通过runOnUiThread
实现的。否则,您可以使用和处理程序
runOnUiThread的文档。用于处理程序。您可以使用处理程序。只需在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");
}
});
您可以使用处理程序
。只需在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");
}
});
你能发布异常堆栈跟踪吗?!还有,你的显示时间是多少,声明在哪里,等等。你能发布异常堆栈跟踪吗?!还有,您的显示时间是多少,在哪里声明,等等。