偏序:AsyncTask.get()和onPostExecute()?

时间:2012-05-05 11:46:17

标签: android android-asynctask oncreate

我正在从我的UI线程实例化并执行AsyncTask(在 我的Activity的onCreate()处理程序)。我保证活动 由于配置更改而无法重新启动(它忽略了方向更改, 例如)。

在我的Activity.onCreate()中:我使用asynctask.execute(),然后使用UI 线程做了一些工作,然后在Activity.onCreate()结束之前调用asynctask.get(...)进行同步。

根据日志,我的asynctask.onPostExecute()被称为年龄 在asynctask.get()之后返回。更确切地说,调用onPostExecute 在Activity.onResume(!)返回后。 (所以它被调用,我的方法定义没问题,我也使用@Override。)

我在某处看到,因为onPostExecute()发布在 UI线程的处理程序,UI线程必须为它做好准备 - 为什么 在这种情况下是不是准备好了?我的应用程序从方向更改开始,但由于我在清单中的设置,它不会导致任何配置更改。

是否可以保证onPostExecute()何时被称为 relative 到 asynctask.get()?

1 个答案:

答案 0 :(得分:3)

  

根据日志,我的asynctask.onPostExecute()在asynctask.get()返回后被调用。更确切地说,在Activity.onResume(!)返回后调用onPostExecute。

根据我对源代码的阅读,

get()仅等待doInBackground()完成。

  

是否有任何保证何时会相对于asynctask.get()调用onPostExecute()?

根据我对源代码的阅读,在onPostExecute()返回后的某个时间将调用

get()。但是,这不是“保证”,因为这种行为没有记录,因此可能会发生变化。