Android的多种数据存储方法
Android为你提供了若干选项用于存储应用程序数据。选择何种方案时情况而定。比如,数据仅为你的应用所使用,或是可是为其他应用(以及用户)所共享。又比如,你的数据需要多少空间。
数据存储有以下几个选择:
Data_Storage#.E4.BD.BF.E7.94.A8.E5.85.B1.E4.BA.AB.E7.9A.84.E9.85.8D.E7.BD.AE_-_Using_Shared_Preferences|Shared Preferences|公共配置-Shared Preferences
通过键值对的方式存储私有的原始数据。
Data_Storage#.E4.BD.BF.E7.94.A8.E5.86.85.E9.83.A8.E5.AD.98.E5.82.A8_-_Using_the_Internal_Storage|Internal Storage|内部存储-Internal Storage
在存储器上存储私有的数据。
Data_Storage#.E4.BD.BF.E7.94.A8.E5.86.85.E9.83.A8.E5.AD.98.E5.82.A8_-_Using_the_Internal_Storage|External Storage | 外部存储 - External Storage
在外部存储器上存储公开的数据。
Data_Storage#.E4.BD.BF.E7.94.A8.E6.95.B0.E6.8D.AE.E5.BA.93_-_Using_Databases|SQLite Database | SQLite数据库 - SQLite Database
在私有的数据库中存储结构化的数据。
Data_Storage#.E4.BD.BF.E7.94.A8.E7.BD.91.E7.BB.9C.E8.BF.9E.E6.8E.A5_-_Using_a_Network_Connection|Network Connection | 网络连接 - Network Connection
使用你的网络服务器存储数据。
Android提供了暴露私有数据给其他应用的方法——使用一个内容提供器(content provider)。内容提供器是一个可选的组件,为你的应用程序数据提供读/写权限,并受制于你给定的限制。关于使用内容提供器的更多细节,请查看Content Providers的文档。
使用共享的配置 - Using Shared Preferences
SharedPreferences类提供了一个通用的框架,用于保存和检索以持久化的键值对形式存储的原始数据类型。你可以使用SharedPreferences保存任意类型的原始数据:布尔(boolean),浮点,(float),整型(int),长整型(long)和字符串(string)。这些数据将会存放在用户会话中(即使你的应用程序已经退出)。
* 用户配置*
共享的配置并非一定要保存用户配置,例如用户选择和哪个铃声。如果你有兴趣为你的应用创建用户配置,请参考PreferenceActivity。它提供了一个Activity的框架,可以用来创建持久化的用户配置(使用共享的配置)。
在应用程序中取得SharedPreferences对象,使用以下两种方法之一:
* int) getSharedPreferences() getPreferences()](http://developer.android.com/reference/android/content/Context.html#getSharedPreferencesjava.lang.String,)( - 当你仅需要一个配置文件。由于这是你的Activity的唯一一个配置文件,所以不必提供名称。
向SharedPreferences写入值的步骤:
1、调用edit(),取得一个SharedPreferences.Editor。
2、使用形如boolean) putBoolean() putString()](http://developer.android.com/reference/android/content/SharedPreferences.Editor.html#putStringjava.lang.String,)这样的方法添加值。(
3、使用commit()提交新值。
从SharedPreferences读取值,使用它的方法,例如boolean) getBoolean() getString()](http://developer.android.com/reference/android/content/SharedPreferences.html#getStringjava.lang.String,)即可。(
这是一个例子,在一个计算器中使用无声的按键保存一个配置:
class extends { static String PREFS_NAME ; protected (){ .onCreate); . // Restore preferences color:#660>(PREFS_NAME0boolean silent settings(, ); setSilent); @Override void onStopsuper(); // All objects are from android.context.Context color:#660>(PREFS_NAME0SharedPreferencesEditor editor settings(); editor(, mSilentMode// Commit the edits! editor(); }
使用内部存储 - Using the Internal Storage
你可以直接将文件保存在设备上的内部存储中。缺省情况下,存放于内部存储的文件为你的应用程序所私有,其他应用程序不能够访问它们(其他用户亦然)。当用户卸载你的应用,这些文件也被删除。
在内部存储中创建并写入一个私有文件:
1、调用openFileOutput(),传入文件名和操作模式。方法返回一个FileOutputStream对象。
2、使用write()写文件。
3、使用close()关闭文件流。
例如:
color:#080>hello_fileString color:#080>hello world!FileOutputStream fos openFileOutput, .MODE_PRIVATE.writestring());fos();
MODE_PRIVATE创建文件(或以同名文件替换),并为你的应用所私有。其他可用的模式有:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)