7

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

设想

该应用程序有一个显示各种片段的 Home 活动。片段中的数据可以来自网络或本地数据库,并使用异步任务检索。

据我所见,我有两种选择:

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

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

什么是正确的方法?

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

4

3 回答 3

1

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

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

于 2013-08-09T10:04:22.247 回答
0

我会使用方法 2,但更进一步。

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

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

于 2013-08-09T10:48:44.733 回答
0

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

于 2013-08-09T09:34:42.363 回答