发布到主循环,执行顺序

时间:2015-08-04 15:53:55

标签: java android multithreading android-asynctask

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

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

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

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

1 个答案:

答案 0 :(得分:2)

通过处理程序在looper上发布的内容将按照发布的顺序执行。

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

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

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