本文译自:http://developer.android.com/guide/topics/data/data-storage.html
Android为持久化的保存数据提供了几种可选择的方案。具体选择哪种方案要依赖你的特定需求,如数据是你的应用程序私有的,还是其他的应用程序(和用户)可访问的,以及数据所需要的空间等。
以下是可选择的存储方案:
用键-值对的形式保存私有的原始数据。
在设备内存中保存私有数据。
在共享的外部存储器上保存公共的数据
在私有的数据库中保存结构化的数据
在Web上用你自己的网络服务器来保存数据。
为了把你的数据(即使是私有数据)暴露给其他的应用程序,Android提供一种方法---使用content provider。Content Provider是暴露你的应用程序数据的读写访问的一种可选组件,并对其施加任何你想要的限制。关于使用Conent Provider的更多信息,请看Content Providers文档。
使用Shared Preferences
SharedPreferences 类提供了通用的框架,它允许你保存和获取持久化的原始数据类型的键-值对。你可以使用SharedPreferences来保存任何原始类型的数据:boolean,float,int,long和string。这种数据会跨用户会话保存(即使你的应用程序被杀死)。
使用以下两种方法来获取SharedPreferences对象:
1. getSharedPreferences()--- 如果你需要通过名称标识来获取多个Preferences文件,就要使用这个方法,这个方法第一个参数指定了Preferences文件名。
2. getPreferences()--- 如果你仅需要一个针对你的Activity的Preferences文件,请使用这个方法,因为这个方法仅是针对你的Activity的Preferences文件,你不需要提供名称。
数据保存方法:
1. 调用edit()方法来获得SharedPreferences.Editor 对象;
2. 使用诸如putBoolean()和putString() 方法来添加值;
3. 使用commit()方法来提交新的值。
使用诸如getBoolean()和getString()方法来读取数据。
以下示例,保存了计算器应用的静音按键的偏好:
public class Calc extends Activity {
public static final String PREFS_NAME = "MyPrefsFile";
@Override
protected void onCreate(Bundle state){
super.onCreate(state);
. . .
// Restore preferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean silent = settings.getBoolean("silentMode", false);
setSilent(silent);
}
@Override
protected void onStop(){
super.onStop();
// We need an Editor object to make preference changes.
// All objects are from android.context.Context
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("silentMode", mSilentMode);
// Commit the edits!
editor.commit();
}
}
本文介绍了Android平台上的多种数据存储方式,包括SharedPreferences、InternalStorage、ExternalStorage、SQLiteDatabases及NetworkConnection等,每种方式适用于不同场景,如私有数据、共享数据及结构化数据等。
705

被折叠的 条评论
为什么被折叠?



