Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在创建视图之前,是否可以在片段中启动AsyncTask?_Android_Android Fragments_Android Asynctask - Fatal编程技术网

Android 在创建视图之前,是否可以在片段中启动AsyncTask?

Android 在创建视图之前,是否可以在片段中启动AsyncTask?,android,android-fragments,android-asynctask,Android,Android Fragments,Android Asynctask,如果onPostExecute()之前需要运行onCreateView(),我可以在片段生命周期中多早启动异步任务?我知道我可以在onCreateView()中启动AsyncTask,但我想知道是否可以保证UI线程在处理任何已完成的后台任务之前达到某个特定点。是什么导致UI线程在完成时转换到AsyncTask?在片段生命周期中,我可以多早启动AsyncTask 您可以在onCreate()中启动AsyncTask,但这并不重要 是什么导致UI线程在完成时转换到异步任务? AsyncTask使用处

如果
onPostExecute()
之前需要运行
onCreateView()
,我可以在片段生命周期中多早启动异步任务?我知道我可以在
onCreateView()
中启动AsyncTask,但我想知道是否可以保证UI线程在处理任何已完成的后台任务之前达到某个特定点。是什么导致UI线程在完成时转换到AsyncTask?

在片段生命周期中,我可以多早启动AsyncTask

您可以在onCreate()中启动AsyncTask,但这并不重要

是什么导致UI线程在完成时转换到异步任务?

AsyncTask使用处理程序更新UI,这意味着它向UI线程的队列发送一条消息,以便在将来某个时候执行。虽然您不知道什么时候会发生,但在您的情况下,它几乎总是在片段设置之后执行

这是无法保证的,因为AsyncTask应该异步运行,并且您无法预测它应该何时运行


然而,您可以通过在实例化片段之前执行AsyncTask来控制此行为,并且只需将AsyncTask结果传递给您的片段。这种方法很有意义,因为如果您想在调用onCreateView()之前运行它,可能不需要片段的状态或实例变量。

onAttach()和onCreate()在onCreateView()之前启动我在问题的关键部分添加了重点。我需要知道“几乎总是”是否可以保证。我可以用粗体字写,但事实就是这样。几乎总是这样。你不可能知道。您所能做的就是更改代码的逻辑。如果必须在创建片段UI之前执行onpost execute,请在添加片段之前的活动中或在上一个事件/屏幕中执行。