Android文档(三)-数据存储

22 November 2009

通常的OS 是采用一个文件系统来存储文件数据,是文件可以被几个文件共同访问。 Android 中采用了不同的数据共享方法。在 Android 中,每个应用的数据文件是私有的,

也就是只有自己能够访问,但是Android 同时提供了一种机制,使得应用可以将自己的私有文件暴露给外部的其他应用程序,从而实现文件数据的共享。这种机制即 Content Providers

Content Providers是一个应用的可选组件,它提供了对数据进行修改的标准接口。 Android 为一些类型数据提供了 content Provides 例如,Image ,  audio ,  video ,以及 personal contact informations

无论如何将数据暴露给其他应用,都需要将数据存储起来。Android 提供了四种方法存储和检索数据:

       1.Preferences

              preferences是一种轻量级的存储机制,采用原始数据类型的 key-values 对来进行存储和检索。通常用来存储应用的 preferences ,例如开机界面或者一个电话欢迎界面。通过 Context.getSharedPreferences() 方法读取和写入数据。 为你想要给同一个应用中的其他组件共享的数据集合起一个名字,或者通过Activity.getPreferences() 直接访问 preferences 数据集。注意: preferences 数据不能够用在不同应用间共享。

2. Files

可以直接在设备上或者移动存储设备上存储文件,但是默认条件下,这些文件对其他应用是不可访问的。

可以通过调用Context.openFileInput() 方法,并向其传递文件名和路径来读取文件。返回一个标准 Java FileInputStream 对象。写入文件是,调用 Context.opernFileOutput() ,返回一个标准 Java FileOutputStream 对象。但是文件访问只能针对本地文件,如果调用文件操作方法去操作其他应用中的文件是不可以的。

另外一种文件访问方法是,如果文件在编译时是静态的,可以通过将文件存储在res/raw/myDataFile ,调用 Resources.openRawResources(R.raw.myDataFile) 方法来访问,该方法返回一个 InputFileStream 对象。

3. Databases

Android API中包含了 SQLite API ,用于创建和使用 SQLite 数据库。每个数据库只对创建它的那个应用是开放的,对其他应用都是私有的。

一个SQLiteDatabase 对象表示一个数据库,并具有可以与之交互的方法。可以调用 SQLiteDatabase.create() 方法创建一个数据库。

Android同样提供了数据库管理函数用于操作存储封装成对象的复杂数据集合。例如, Android 中定义了一个联系人信息 (contact information) 的类型,其中包含了姓名( string) ,地址 (String) ,照片 (bitmap) 的多种描述人的信息数据。

所有的数据库,SQLite 以及其它的,都被存储在设备上的 /data/data/package_name/databases 中。

4. Network

Android可以通过网络来检索和存储数据,当然,前提是可以联网。



blog comments powered by Disqus