【发布时间】:2016-01-03 01:42:42
【问题描述】:
我正在开发社交应用。假设我有一堆活动A -> B -> C -> D。
D 在前台,用户按下“喜欢”按钮到那里(发布、评论、用户等)。通知所有其他活动有关此操作以刷新其数据的最佳方式是什么?我在这里看到 3 个选项:
- 使用本地数据库和一些加载器来自动刷新数据。但是,如果我们有不同的数据模型共享数据(例如
BasicUserInfo、UserInfo、DetailedUserInfo),则需要大量代码。 - 将 EventBus 用于粘性事件(Otto 的生产者)。在这种情况下,我必须只通知 backstack 活动并忽略那些将被创建的活动。我还必须管理事件覆盖。
- 使用带有 WeakReferences 的简单观察者模式来回溯活动。但是我遇到了将要重新实例化的已终止活动的问题。
实例:
在 Instagram 中:我打开一些特定用户的个人资料 (A),在那里我打开一些特定的帖子 (B),再次打开个人资料 (A),依此类推 A -> B -> A -> B -> A ... . 所以它每次都从网上加载数据。在步骤“n+1”上,会出现对该帖子的新评论。如果我开始通过我的后台堆栈返回,我将看到 instagram 已将这个“新”评论发送到所有 B 活动,而无需从 web 重新加载任何数据。所以我很感兴趣他们是如何做到的。
【问题讨论】:
-
我认为 Otto 是最好的情况。
-
@Sunny,因为活动在后台时没有注册,所以我必须使用生产者来使活动变得粘滞。在这种情况下,我不确定如何仅将这些事件传递给 backstack 活动。
标签: android