我一直在寻找完美的 android 应用程序架构,并阅读了一些关于这个主题的精彩博文。
1) http://www.mdswanson.com/blog/2014/04/07/durable-android-rest-clients.html
2) http://birbit.com/a-recipe-for-writing-responsive-rest-clients-on-android/
两篇文章都描述了如何利用事件总线在 android 组件(活动、片段、服务)之间进行通信。
一个,但非常重要的话题没有涉及。如何处理暂停时发布到 UI 组件的事件。
例如:服务在完成将数据下载到活动时发布事件。此时活动已暂停。由于事件总线在 onPause() 中被注销,我们完全失去了这个事件。
greendao 的 EvenBus 提供粘性事件。但如果不删除它们可能会导致内存泄漏。
Square 的 Otto 引入了“Producer”模式,可以用来代替粘性事件。
如果不手动删除粘性事件,第一个解决方案可能会导致内存泄漏。
第二个要求将数据保存在某个地方,直到 Producer 方法将其返回给订阅者。这个解决方案似乎更正确,但需要编写更多代码。
任何人都可以分享如何解决这种极端情况的想法吗?任何干净的解决方案?