我有简单的DataHolder课程:public class DataHolder{ private static final DataHolder holder = new DataHolder(); Map<String, WeakReference<Object>> data = new HashMap<>(); public static DataHolder getInstance() {return holder;} public void save(String id, Object object) { data.put(id, new WeakReference<>(object)); } public Object retrieve(String id) { WeakReference<Object> objectWeakReference = data.get(id); return objectWeakReference.get(); }}基本上,我想保存一些数据以在其他任何地方检索它们(例如,其他活动或片段)。保存:DataHoler.getInstance().save("list", myList);要检索数据:List<MyObject> list = (ArrayList) DataHoler.getInstance().retrieve("list");我的意图是避免使用 parcelable 传递大量数据(应该避免这种情况,列表可能很大)+简化对所有活动/片段之间数据的访问。我的方法正确吗?不确定它是否会导致任何意外行为或内存泄漏。
3 回答
慕神8447489
TA贡献1780条经验 获得超1个赞
我推荐使用 SoftReference,它更适合缓存,对象的寿命会更长。如果 GC 删除了您实际需要的数据怎么办?WeakReference 或 SoftReference 对象可以随时被 GC 删除。
添加回答
举报
0/150
提交
取消