1.2.2 数据存储

对于很多应用而言,大到复杂的结构化数据,小到简单的设置信息,都有数据存储的需求。广义上看,应用数据存储有两种方式:一种是将数据存放在本地存储设备中;而另一种则是通过网络,将数据存储在远端服务器中,也就是常说的“云存储”。

Android本地数据存储的最大特点是数据的私有化。每个应用的配置信息和数据库文件等数据,都是其私有的,其他应用没有权限进行读写,从而保证了应用数据的安全性。而对于如何将其数据共享给其他应用,一个策略是构造一个数据源组件(Content Provider),其他应用的组件可以通过数据源组件的接口访问它所提供的数据;而另一个常用的策略是将数据放入扩展存储设备(通常是SD卡等扩展存储卡)中,在该存储设备中的数据,可以被所有应用共同访问。比如,Android的多媒体数据文件通常存储在扩展存储设备中,以便各个图像应用、音乐播放应用等读写。

Android对本地数据的存储,可以有多种文件格式,比如普通数据文件、设置文件和数据库,等等。设置文件(Preferences)是专门针对存储应用设置信息而设计的,它依照键值对的形式进行保存,Android从界面到存储都做了完整的支持。而Android的数据库依靠Sqlite的支持,在android.database包中提供了更为便捷的读写类库支持,开发者可以使用SQL语言或者结构化的数据对象对数据库进行增、删、改、查等操作。

本地数据存储有其天生的弊端,当用户更换设备或卸载应用时,存储在本地的数据就会丢失。为了解决这个问题,在Android 2.2中,引入了云存储的支持,就是不仅将数据存储在本地,同时还将其同步到Google提供的远端服务器中(所谓的云端)。这样,即使存储在本地的数据遗失了,也可以通过网络再同步回来,既保证了数据安全性,又有利于改善用户体验。

在实际开发中,数据存储最重要的是策略合适。面对不同的数据应该用怎样的策略存储比较合适,需要综合性能、简单性、可靠性等多种因素来考虑,关于数据存储的更多介绍和实践,见第9章。