8

有没有办法在 AsyncTask 的 doinbackground() 中执行 UI 任务。我很清楚最好在 onPostExecute 方法中执行此操作。但就我而言,因为我需要使用可重用的警报,所以能够在我的 doinbackground 中访问 UI 将为我节省大量时间。也就是说,我需要在 46 个地方调整代码,但能够在 doinbackground 中做到这一点只需要在一个地方进行更改。

提前致谢

4

3 回答 3

29

希望这能解决你的问题

    onPreExecute() {
       // some code #1
    }

    doInBackground() {
        runOnUiThread(new Runnable() {
                    public void run() {
                        // some code #3 (Write your code here to run in UI thread)

                    }
                });
    }

    onPostExecute() {
       // some code #3
    }
于 2013-04-02T06:44:29.010 回答
7

除了从 更新 UI 之外onPostExecute(),还有 2 种更新 UI 的方法:

  1. doInBackground()实施runOnUiThread()
  2. onProgressUpdate()

供参考,

onProgressUpdate()- 每当您想更新任何内容时doInBackground(),您只需要使用publishProgress(Progress...)发布一个或多个进度单位,它就会onProgressUpdate()在 UI 线程上 ping 更新。

于 2013-04-02T06:11:56.523 回答
3

onProgressUpdate你可以利用

文档

于 2013-04-02T06:12:19.197 回答