从后台任务中的do更新android UI

从后台任务中的do更新android UI,android,user-interface,android-asynctask,Android,User Interface,Android Asynctask,我正在使用AsyncTask执行后台任务。任务处于while循环中。 如果后台任务仍在运行,如何在执行后更新UI,因为该任务不起作用 谢谢 受保护字符串doInBackground(无效…参数){ 如果要从后台线程使用UI,请在doInBackground runOnUiThread(new Runnable(){ public void run() { // update UI } 使用publishProgress方法。在onProg

我正在使用AsyncTask执行后台任务。任务处于while循环中。 如果后台任务仍在运行,如何在执行后更新UI,因为该任务不起作用

谢谢

受保护字符串doInBackground(无效…参数){


如果要从后台线程使用UI,请在
doInBackground

runOnUiThread(new Runnable(){
        public void run() {
            // update UI
        }

使用
publishProgress
方法。在
onProgressUpdate
中执行的任何操作都将在UI线程上运行

 private class TestAsyncTask extends AsyncTask<Void, String, Void> {
        @Override
        protected Void doInBackground(Void... voids) {
            SystemClock.sleep(1000);
            publishProgress("Test");
            SystemClock.sleep(1000);
            return null;
        }

        @Override
        protected void onProgressUpdate(String... values) {
            String test = values[0];
            // Do something with it
        }
    }
私有类TestAsyncTask扩展了AsyncTask{
@凌驾
受保护的空位背景(空位…空位){
系统时钟。睡眠(1000);
出版进度(“测试”);
系统时钟。睡眠(1000);
返回null;
}
@凌驾
受保护的void onProgressUpdate(字符串…值){
字符串测试=值[0];
//用它做点什么
}
}
受保护的void onProgressUpdate(进度…值)

添加在API级别3中,在之后在UI线程上运行 调用publishProgress(Progress…)。指定的值为 传递给publishProgress(进度…)的值

参数值指示进度的值


使用BroadcastReceiver follow链接:您好,谢谢您的帮助!我一直在尝试这样做,但我无法让它正常工作……我是否应该在doInBackground中放置RunUnuithRead?是的,我在回答中提到过,您必须在doInBackground中使用它
 private class TestAsyncTask extends AsyncTask<Void, String, Void> {
        @Override
        protected Void doInBackground(Void... voids) {
            SystemClock.sleep(1000);
            publishProgress("Test");
            SystemClock.sleep(1000);
            return null;
        }

        @Override
        protected void onProgressUpdate(String... values) {
            String test = values[0];
            // Do something with it
        }
    }