android组件间传递大量数据

本文探讨了Android系统中Intent在传输大数据时遇到的问题及解决策略。介绍了两种主要的方法:一是通过临时文件或数据库进行间接数据传递;二是利用静态类实现跨组件数据共享,并对比了这两种方法的优缺点。

intent作为一种及时性的组件间数据传递方式非常好用,但是当传递的数据大于1M时,就力不从心了,很可能导致OOM,怎么办?
此时只能改变存储类型为永久存储,官方推荐ContentProvider;更大的数据可以用MemoryFile
PS:使用intent传参实际上是保存到bundle里面了
intent源码

 public Intent putExtra(String name, Parcelable value) {
        if (mExtras == null) {
            mExtras = new Bundle();
        }
        mExtras.putParcelable(name, value);
        return this;
    }

参考:
方法一:将需要传递的数据写在临时文件或者数据库中,再跳转到另外一个组件的时候再去读取这些数据信息,这种处理方式会由于读写文件较为耗时导致程序运行效率较低;

方法二:将需要传递的数据信息封装在一个静态的类中(注意当前组件和要跳转到的组件必须属于同一个进程,因为进程之间才能够共享数据),在当前组件中为类设置内容,然后再跳转到的组件中去取,这种处理方式效率很高,但是会破坏程序的独立性。
https://blog.youkuaiyun.com/wzgiceman/article/details/50610969#commentsedit

https://www.jianshu.com/p/d9bc9c668ba6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值