关于Activity之间正向传值大小超过1M崩溃问题
记录下项目中遇到的问题,正常传递list集合时使用例如:
bundle.putSerializable("seriesList", (Serializable) seriesList);
集合小的时候完全没问题ok
但是当我遇到了一个超过一千条的数据并且里面还有别的东西图片啊等等比较大,超过了1m这时候会导致页面崩溃
有的人可能想转成json等方式还是不行
我说下我的解决方式
创建一个WeakDataHolder类采用单例模式
创建一个map来进行存储,我采用了软引用的方式来进行优化,方便系统进行回收
Map<String, WeakReference<Object>> map = new HashMap<>();
完美解决了这个问题
下面附上完整代码
public class WeakDataHolder {
private static WeakDataHolderinstance;
public static WeakDataHolder getInstance(){
if(instance ==null){
synchronized (WeakDataHolder.class) {
if (instance ==null) {
instance =new WeakDataHolder();
}
}
}
return instance;
}
private Map>map =new HashMap<>();
/**
* 数据存储
* @param id
* @param object
*/
public void saveData(String id, Object object) {
map.put(id,new WeakReference<>(object));
}
/**
* 获取数据
* @param id
* @return
*/
public Object getData(String id) {
WeakReference weakReference =map.get(id);
return weakReference.get();
}
}