Java 后台线程与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

我正在使用Eclipse和android编程。AsyncThread是否可以与UI交互,我的后台线程中有此代码,它导致引发异常:

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

你能发布异常堆栈跟踪吗?!还有,你的
显示时间是多少,声明在哪里,等等。你能发布异常堆栈跟踪吗?!还有,您的
显示时间是多少,在哪里声明,等等。