片段或父活动中的Asynctask?

时间:2013-08-09 09:25:01

标签: android android-fragments android-asynctask

我有一个场景,我不确定要走哪条路。

方案

该应用有一个Home活动,可显示各种片段。片段中的数据可以来自Web或本地数据库,并使用asynctask进行检索。

从我看到的情况来看,我有两种选择:

  1. 将Asynctask放入父活动中,然后使用fragment.newInstance(parameters)将结果传递给片段。但是,如果在我的asynctask中我需要更新片段的进度或一些信息,每次我都必须使用新的参数集调用newInstance。

  2. 添加片段并将asynctask放入其中,这样当需要进度时,我可以更新片段的视图,因为我可以访问它们+当asynctask完成时,我可以填充列表信息。

  3. 什么是正确的方法?

    LE:实际上对于第1点来说,为了更新片段,我可以在父活动中找到findFragmentById之后调用片段的公共方法

3 个答案:

答案 0 :(得分:1)

如果您有多个任务,更好的方法是使用IntentService: http://mobile.tutsplus.com/tutorials/android/android-fundamentals-intentservice-basics/

您可以更好地控制您要求的内容以及您要取消的内容。

答案 1 :(得分:0)

我会选择第二种方法 我的主要原因是避免在AsyncTask工作时屏幕方向发生变化时可能发生的问题。

答案 2 :(得分:0)

我会选择方法2,但更进一步。

有一个单独的片段来运行您的异步任务。这样,您可以处理任何配置更改(不仅仅是旋转屏幕)而不会出现任何问题。

在另一个片段中,您可以显示数据。您可以通过回调将数据从异步任务片段传递到活动,并让活动调用显示片段中的方法来更新数据。