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,请在添加片段之前的活动中或在上一个事件/屏幕中执行。