android传递大数据

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> 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 weakReference = map.get(id);
        return weakReference.get();
    }
}

主要就是通过弱引用来实现,数据的保存和读取,不通过Intent传递数据

你可能感兴趣的:(android传递大数据)