假设我有一个简单的应用程序,其中包括:
带有列表视图的片段以显示书籍列表
保存片段的 Activity
某些 Web 组件将向某处的服务器发出查询以获取要显示的书籍列表
将这些组件连接在一起的最佳方式是什么?我看到了几个选项,但哪个是最好的(是否有任何最佳实践)?
Activity 向网络服务器发出查询(通过 AsynTask / new Thread),并将结果推送到片段
创建另一个没有 UI 的片段,并通过 AsyncTask / new Thread 查询此问题(如选项 1,但将删除因屏幕旋转问题而被破坏的活动)
Fragment直接调用webserver,activity什么都不做
添加一个意图服务来执行查询,然后将结果广播到:
a) Activity - 将它们推送到 Fragment
b) Fragment 直接接收广播
这些中的任何一个被认为比另一个更好吗?
各种与片段相关的帖子都说过“将片段视为视图,将活动视为控制器”,因此这表明选项 3 可能不是一个好主意。
选项 2 似乎将活动视为控制器的混合体,将一些“控制器”功能委托给另一个片段,但关键不是“视图”片段
选项 4 看起来很有趣,但是您遇到了必须广播所有结果的问题(而 1 和 2 您将拥有实际的对象)。当然,您可以通过使用 LocalBroadcastManager 使广播更加高效(和安全),但您仍然必须广播所有网络结果。
如果我下载的是图像(一些实质性的东西)而不是(例如)变成轻量级 Parcelable 对象的 JSON 消息怎么办?
正如我所说,我可以想到很多方法来做到这一点——我们认为什么是正确的方法?