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

Android 偏序:AsyncTask.get()和onPostExecute()?,android,android-asynctask,oncreate,Android,Android Asynctask,Oncreate,我正在从我的UI线程(在 我的活动的onCreate()处理程序)。我保证这次活动 由于配置更改而无法重新启动(它忽略方向更改, 例如) 在Activity.onCreate()中:我使用asynctask.execute(),然后使用UI 线程执行一些工作,然后在Activity.onCreate()结束之前调用asynctask.get(…)进行同步 根据日志,我的asynctask.onPostExecute()被调用 在asynctask.get()返回之后。更准确地说,onPostEx

我正在从我的UI线程(在 我的活动的onCreate()处理程序)。我保证这次活动 由于配置更改而无法重新启动(它忽略方向更改, 例如)

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

根据日志,我的asynctask.onPostExecute()被调用 在asynctask.get()返回之后。更准确地说,onPostExecute被调用 Activity.onResume(!)返回后。(所以它确实被调用了,我的方法定义还可以,我也使用@Override。)

我在某个地方读到,自从onPostExecute()在 UI线程的处理程序,UI线程必须为此做好准备--为什么 在这种情况下还没准备好吗?我的应用程序以方向更改开始,但不会因为清单中的设置而导致任何配置更改

是否可以保证onPostExecute()何时被称为相对 是否要异步任务。获取()

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

get()
根据我对源代码的阅读,只等待
doInBackground()
完成

是否可以保证相对于asynctask.get()调用onPostExecute()的时间


根据我对源代码的阅读,在返回
get()
后的某个时间将调用
onPostExecute()
。然而,这并不是一种“保证”,因为这种行为没有记录,因此可能会发生变化。

这真的很有趣。事实上,文档避免了指定这一点,但这使得onPostExecute()非常不切实际。文档至少应该说明,不保证何时调用onPostExecuted()。我最初假设它在get()返回之前执行。我试图深入研究Android的源代码,但由于get()使用的是非常低级的服务,因此我没有幸运地找到onPostExecute()和get()的预期顺序(如果有的话)。@ThomasCalc:“但这使得onPostExecute()非常不切实际”--不是真的,因为你是我三年来遇到的第一个使用
get()
的人。我在应用程序的安装阶段使用Asynctask。它从外部存储器读取数据。但是,应用程序只有在加载所有数据后才会显示欢迎屏幕。请注意,这不是很多数据,否则它实际上会阻塞解决方案(由于get()),但在加载数据时,GUI可以准备其布局(setcontentview等),并且在oncreate()结束时,它们会同步。@ThomasCalc:我不是说您所做的是错误的。不过,我想说的是,“这使得onPostExecute()非常不切实际”的说法是言过其实的。对于您的用例来说,
onPostExecute()
“非常不切实际”,但您的用例并不是
AsyncTask
的唯一用例。对于我的问题这一类来说是不切实际的。