關(guān)于Activity之間正向傳值大小超過1M崩潰問題
記錄下項(xiàng)目中遇到的問題,正常傳遞list集合時(shí)使用例如:
bundle.putSerializable("seriesList", (Serializable) seriesList);
集合小的時(shí)候完全沒問題ok
但是當(dāng)我遇到了一個(gè)超過一千條的數(shù)據(jù)并且里面還有別的東西圖片啊等等比較大,超過了1m這時(shí)候會導(dǎo)致頁面崩潰
有的人可能想轉(zhuǎn)成json等方式還是不行
我說下我的解決方式
創(chuàng)建一個(gè)WeakDataHolder類采用單例模式
創(chuàng)建一個(gè)map來進(jìn)行存儲,我采用了軟引用的方式來進(jìn)行優(yōu)化,方便系統(tǒng)進(jìn)行回收
Map<String, WeakReference<Object>> map = new HashMap<>();
完美解決了這個(gè)問題
下面附上完整代碼
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<>();
/**
? ? * 數(shù)據(jù)存儲
? ? * @param id
? ? * @param object
? ? */
? ? public void saveData(String id, Object object) {
map.put(id,new WeakReference<>(object));
}
/**
? ? * 獲取數(shù)據(jù)
? ? * @param id
? ? * @return
? ? */
? ? public Object getData(String id) {
WeakReference weakReference =map.get(id);
return weakReference.get();
}
}