【问题标题】:Posting to main looper, order of execution发布到主循环器,执行顺序
【发布时间】:2015-08-04 15:53:55
【问题描述】:

我有一个 asyncTask 正在后台线程中更新一些数据。当我需要更新我的 UI 时,我使用以下内容发布到主线程:

Handler mainHandler = new Handler(context.getMainLooper());
mainHandler.post(new Runnable() {
        @Override
        public void run() {
                //do stuff on main thread
        }
    }
);

我想知道,对于主循环器处理其消息的顺序是否有任何保证?即:主线程会按照发布的顺序运行looper消息吗?

另外,如果我在 AsyncTask 的 doInBackground 方法中使用上面的代码发布到主线程,这些代码会在 AsyncTask 的 onPostExecute 方法运行之前运行吗?

【问题讨论】:

  • 你为什么不用publishProgress()

标签: java android multithreading android-asynctask


【解决方案1】:

通过处理程序发布到循环器上的内容将按照您发布它们的顺序执行。

您在 doInBackground 中发布的内容将在您在 onPostExecute 中发布的内容之前发布。

请记住,onPostExecute 已经在主循环器上运行。

考虑使用 onProgressUpdate 而不是在处理程序上发布,当您从 doInBackground 方法执行 publishProgress 时,它将在主循环器上调用。

【讨论】:

    猜你喜欢
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    • 2014-05-29
    • 1970-01-01
    • 2019-11-22
    • 2021-08-03
    • 1970-01-01
    相关资源
    最近更新 更多