我正在从我的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()?
答案 0 :(得分:3)
根据我对源代码的阅读,根据日志,我的asynctask.onPostExecute()在asynctask.get()返回后被调用。更确切地说,在Activity.onResume(!)返回后调用onPostExecute。
get()
仅等待doInBackground()
完成。
根据我对源代码的阅读,在是否有任何保证何时会相对于asynctask.get()调用onPostExecute()?
onPostExecute()
返回后的某个时间将调用 get()
。但是,这不是“保证”,因为这种行为没有记录,因此可能会发生变化。