在创建视图之前,我可以在片段中启动AsyncTask吗?

时间:2016-09-16 17:44:16

标签: android android-fragments android-asynctask

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

2 个答案:

答案 0 :(得分:1)

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

你可以在onCreate()中启动AsyncTask,但这没关系。

是什么原因导致UI线程在完成后转换为AsyncTask?

AsyncTask使用处理程序来更新UI,这意味着它将消息发送到UI线程的队列,以便将来某个时间执行。虽然您无法知道何时会发生这种情况,但在您的情况下,它几乎总是在设置片段后执行。

答案 1 :(得分:0)

  

无法保证这一点,因为AsyncTask应该是异步运行的,你无法预测它何时应该运行。

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