WeakReferences的HashMap,用于在活动之间传递数据

Igo*_*gor 2 android communication weak-references hashmap

我特别感兴趣的是官方android FAQ中的以下建议.

WeakReferences对象的HashMap

您还可以使用WeakReferences的HashMap到具有长键的对象.当活动想要将对象传递给另一个活动时,它只是将对象放入地图中,并通过意图附加功能将密钥(基于计数器或时间戳的唯一Long)发送给收件人活动.收件人活动使用此密钥检索对象

我还没有找到如何正确实现这一点的方法.我不确定为什么WeakReferences在这里是首选,为什么不使用硬引用.

我的实现(我想从活动A服务B发送类XY的实例):

代码使用硬引用.我为什么要在这里使用弱引用(如FAQ所提出的)?并且这样的使用模式可以传递数据,或者您更喜欢其他内容.

Com*_*are 5

我为什么要在这里使用弱引用(如FAQ所提出的)?

因为你在泄漏记忆.你放入静态的任何东西HashMap都不会被垃圾收集.

并且这样的使用模式可以传递数据,或者您更喜欢其他内容.

我更喜欢在活动之间传递简单数据.任何非原始的(或系统提供的Parcelable,如a PendingIntent)都应该被视为数据模型的一部分,并且应该这样管理.这是一篇博文,我将详细介绍.