【发布时间】:2019-04-16 10:22:24
【问题描述】:
我有简单的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 传递大量数据(应该避免这种情况,列表可能很大)+ 简化所有活动/片段之间对数据的访问。
我的方法正确吗?不确定它是否会导致任何意外行为或内存泄漏。
【问题讨论】:
标签: java android memory-leaks weak-references