Android序列化传递大数据
解决Intent传递大数据出现的奔溃问题
上代码
/**
* 用来传递大数据
* 参考:https://blog.csdn.net/dayun220/article/details/77720473
* 考虑用WeakHashMap进行优化
*/
public class WeakDataHolder {
private static WeakDataHolder instance;
public static WeakDataHolder getInstance() {
if (instance == null) {
synchronized (WeakDataHolder.class) {
if (instance == null) {
instance = new WeakDataHolder();
}
}
}
return instance;
}
private Map<String, WeakReference<Object>> map = new HashMap<>();
/**
* 数据存储
*
* @param id
* @param object
*/
public void saveData(String id, List object) {
//变成新地址
List newList = new ArrayList();
newList.addAll(object);
//变成新地址
map.put(id, new WeakReference<>(newList));
}
/**
* 获取数据
*
* @param id
* @return
*/
public Object getData(String id) {
WeakReference<Object> weakReference = map.get(id);
return weakReference.get();
}
}
主要就是通过弱引用来实现,数据的保存和读取,不通过Intent传递数据