Android 里的数据储存

关于数据储存,这个话题已经被反复讨论过很多次了,我是不建议把网络存储这种方式纳入到数据储存的范围的,因为这个和Android没多少关系,因此就有如下的分类:

  1. 本地储存(也称之为数据持久化,包含文件储存,SharedPreferences,SQLite储存和ContentProvider(内容提供者));
  2. 内存储存(静态变量、全局变量存值).

适用场景
如果app内有些数据是需要使用到上次该app关闭时的数据,比如下次启动app没有网络时要求显示之前的省市信息,那么无论,你有多么不愿意,本地储存是必要的,无非就是有数据时从内存先取,没有时从本地存储空间取;
内存储存相对于本地储存有着响应快,耗时低的优势,本地储存数据量大IO操作耗时长时甚至要在非UI线程来执行.这就意味着,能不用本地储存就不要用.

基本用法

  • 使用SharedPreferences存储数据
    SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长整形、Int整形、String字符串型的保存。
    它是什么样的处理方式呢? SharedPreferences类似过去Windows系统上的ini配置文件,但是它分为多种权限,可以全局共享访问,最终是以xml方式来保存,整体效率来看不是特别的高,对于常规的轻量级而言比SQLite要好不少,如果真的存储量不大可以考虑自己定义文件格式。xml 处理时Dalvik会通过自带底层的本地XML Parser解析,比如XMLpull方式,这样对于内存资源占用比较好。 其本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。

总结
  我个人而言,使用的多点的就是sp储存,sqlite储存,文件储存;contentprovider使用的最少,用到基本就是调用系统的内容提供者获取一下联系人列表什么的;如果存储的是较复杂的javabean,那还是老老实实的用sqlite吧,别忘了增删改查放在工作线程;本地储存的话尤其要注意权限问题,7.1的这些储存权限已经是危险权限了,单单在AndroidManifest定义是没用的,需要配合使用动态权限申请(定制的系统就例外了,哈哈,自己定制的什么都好说);从性能最优的角度说,能不用本地储存就不要用,用到本地储存时,能用sp,就不要用sqlite;文件储存慎用…

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值