Android 持久化存储方式

1.SharedPreference

SharedPreferences是一种轻量级的存储方式,通过存为键值对保存为xml文件来存放读取数据,文件路径在data/data/程序包名/share_prefs 目录下,只适合存储一些简单参数配置;

1.不要存放大的key和value在SharedPreferences中,否则会一直存储在内存中得不到释放,内存使用过高会频发引发GC,导致界面丢帧甚至ANR。

2.不要每次都edit,因为每次都会创建一个新的EditorImpl对象,最好是批量处理统一提交。否则edit().commit每次创建一个EditorImpl对象并且进行一次IO操作,严重影响性能。

3.commit这种方式很常用,在比较早的SDK版本中就有了,这种提交修改的方式是同步的,会阻塞调用它的线程,并且这个方法会返回boolean值告知保存是否成功(如果不成功,可以做一些补救措施)。
apply是异步的提交方式,目前Android Studio也会提示大家使用这种方式。



作者:goeasyway
链接:https://www.jianshu.com/p/4dd53e1be5ba
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

2.文件存储(三级缓存中的磁盘缓存)

网络下载文件后,保存到文件缓存中。最好的三级缓存策略:先读取内存缓存(LruCache算法,很多框架都封装过),没有找到再查找磁盘缓存,最后没找到再请求网络;

。。IO操作

 

上述是读取内存卡中的缓存,如果读取外部SD卡,需要在原来读写逻辑前先判断Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) 是否为true,才能开始读写;

 

3.网络存储(三级缓存中的网络缓存)

通过网络请求直接下载的文件,直接走Http  conn.getInputStream() 拿到输入流,通过输入流把文件读取出来;

 

4.ContentProvider

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值