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<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传递数据

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容