1

假设我有一个简单的应用程序,其中包括:

带有列表视图的片段以显示书籍列表

保存片段的 Activity

某些 Web 组件将向某处的服务器发出查询以获取要显示的书籍列表

将这些组件连接在一起的最佳方式是什么?我看到了几个选项,但哪个是最好的(是否有任何最佳实践)?

  1. Activity 向网络服务器发出查询(通过 AsynTask / new Thread),并将结果推送到片段

  2. 创建另一个没有 UI 的片段,并通过 AsyncTask / new Thread 查询此问题(如选项 1,但将删除因屏幕旋转问题而被破坏的活动)

  3. Fragment直接调用webserver,activity什么都不做

  4. 添加一个意图服务来执行查询,然后将结果广播到:

    a) Activity - 将它们推送到 Fragment

    b) Fragment 直接接收广播

这些中的任何一个被认为比另一个更好吗?

各种与片段相关的帖子都说过“将片段视为视图,将活动视为控制器”,因此这表明选项 3 可能不是一个好主意。

选项 2 似乎将活动视为控制器的混合体,将一些“控制器”功能委托给另一个片段,但关键不是“视图”片段

选项 4 看起来很有趣,但是您遇到了必须广播所有结果的问题(而 1 和 2 您将拥有实际的对象)。当然,您可以通过使用 LocalBroadcastManager 使广播更加高效(和安全),但您仍然必须广播所有网络结果。

如果我下载的是图像(一些实质性的东西)而不是(例如)变成轻量级 Parcelable 对象的 JSON 消息怎么办?

正如我所说,我可以想到很多方法来做到这一点——我们认为什么是正确的方法?

4

1 回答 1

1

您的所有问题都可以通过 Loaders 解决。这就是他们的设计目的。查看开发指南:http: //developer.android.com/guide/components/loaders.html

于 2014-08-06T20:24:52.090 回答