Android数据存储方式有什么不同
SharedPreferences共享偏好
只能存储一些Key/Value类似的成对的基本数据类型,所以一般用来保存配置(Settings)信息。使用简单方便;Internal Storage内部存储空间
即设备出产前设定的储存空间,一般安装应用就安装在此。比较稳定,存储方便,操作简单,更加安全(因为可以控制访问权限)等优点。而它唯一的缺点就是它比较有限,比较可贵。
External Storage外部存储空间
类似SD卡以及一些扩展存储,方便用户存放更多的数据,如音乐下载,视频等。存储在外部存储卡上的数据是所有应用程序都可见,用户也可见(使用FileManager)。外部存储卡不是随时想用就能够用的,所以一定要记得在使用之前检查它的可用性。
SQLite Database数据库
是Android自带的一个小型数据库。效率出众,这是无可否认的。十分适合存储结构化数据。 方便在不同的Activity,甚至不同的应用之间传递数据。由专门的ContentProvider来帮忙管理和维护数据库
Internet网络
网络是比较不靠谱的一个,因为移动终端的网络稳定性,以及所产生的流量让人伤不起,用户更伤不起。但若是对于非常重要的实时数据,或是需要发送给远端服务器处理的,也可以考虑使用网络实时发送。
综上,
1. 简单数据和配置信息,SharedPreference是首选;
2. 如果SharedPreferences不够用,那么就创建一个数据库
3.
结构化数据,一定要创建数据库,虽然这稍显烦锁,但是好处无穷
4.
文件就是用来存储文件(也即非配置信息或结构化数据),如文本文件,二进制文件,PC文件,多媒体文件,下载的文件等等。
5. 尽量不要创建文件
6.
如果创建文件,如果是私密文件或是重要文件,就存储在内部存储,否则放到外部存储
7.
不要收集用户数据,更不要发到网络上,虽然你们也有很多无奈。用户也无奈,也无辜,但更无助
平台为开发者准备了这么多的方式固然是一件好事,但我们要认清每一种的优点和缺点,根据实际情况选择最合适的。还有一个原则就是最简单原则,也就是说能用简单的方式处理,就不要用复杂的方式。比如存储几个数据或简单对象,用SharedPreference也能做到,何必还去写个ContentProvider呢?