我必须解决一个理论问题,并希望获得有关在android中解决此问题的最佳模式/实践的反馈。
任务: 应用程序可以有多个活动/片段显示对象列表。如果一个对象同时存在于多个列表中,我希望将更改同步到此对象。所以例如如果我删除该对象,它应该在所有列表中消失。
限制是
到目前为止我的解决方案是
有谁知道更好的解决方案吗?我的解决方案是否符合android生命周期?
非常感谢各种有用的反馈
答案 0 :(得分:0)
你的解决方案似乎很好。您可以使用像Otto http://square.github.io/otto/这样的EventBus在修改对象时向您的所有活动/片段发送事件。
答案 1 :(得分:0)
如果您想要处理Object,那么请阅读实现服务和绑定它们。您可以使用自己的API方法提供所有对象并返回值。如果您的数据适合数据游标模型,那么您应该阅读构建自己的ContentProvider。它内置了数据观察,所有适配器都支持它。
答案 2 :(得分:0)
如果您坚持在单独的Activity / Fragment实例中维护单独的列表,那么您将容易出现生命周期问题(当您暂停或某事时,您可能会错过对象修改事件)。 Otto或其他EventBus库可能会有所帮助。
但是,我认为在本地可绑定服务中托管所有这些列表(及其可能共享的对象)会更简单。然后,每个Activity / Fragment可以简单地在onCreate / onDestroy中绑定/解除绑定,从而保证这些列表的最新视图。
请参阅http://developer.android.com/guide/components/bound-services.html
另一个类似的解决方案是在保留的片段中托管所有这些列表。使用保留的片段比服务更简单,因为您不必编写所有绑定/解除绑定代码。但是,如果您有多个需要访问相同对象列表的Activity组件,则保留的Fragments可能无法像Service一样工作。
另一个hacky解决方案是在Application实例本身(实际上是一个全局变量)中托管所有这些东西。然后你的Activity / Fragment代码可以调用((MyApplication)getApplication())。getFooList()来获取这些对象。