我有一个场景,我不确定要走哪条路。
方案
该应用有一个Home活动,可显示各种片段。片段中的数据可以来自Web或本地数据库,并使用asynctask进行检索。
从我看到的情况来看,我有两种选择:
将Asynctask放入父活动中,然后使用fragment.newInstance(parameters)
将结果传递给片段。但是,如果在我的asynctask中我需要更新片段的进度或一些信息,每次我都必须使用新的参数集调用newInstance。
添加片段并将asynctask放入其中,这样当需要进度时,我可以更新片段的视图,因为我可以访问它们+当asynctask完成时,我可以填充列表信息。
什么是正确的方法?
LE:实际上对于第1点来说,为了更新片段,我可以在父活动中找到findFragmentById
之后调用片段的公共方法
答案 0 :(得分:1)
如果您有多个任务,更好的方法是使用IntentService: http://mobile.tutsplus.com/tutorials/android/android-fundamentals-intentservice-basics/
您可以更好地控制您要求的内容以及您要取消的内容。
答案 1 :(得分:0)
我会选择第二种方法 我的主要原因是避免在AsyncTask工作时屏幕方向发生变化时可能发生的问题。
答案 2 :(得分:0)
我会选择方法2,但更进一步。
有一个单独的片段来运行您的异步任务。这样,您可以处理任何配置更改(不仅仅是旋转屏幕)而不会出现任何问题。
在另一个片段中,您可以显示数据。您可以通过回调将数据从异步任务片段传递到活动,并让活动调用显示片段中的方法来更新数据。