SCID: L0026
有时候应用程序在退出的时候,需要保存一些持久性的配置参数信息,以便下次进入程序后能通过读取这些信息来将程序设置成某种运行状态。Android提供了SharedPreferences类实现保存配置参数信息到本地存储器。类似winform的ini文件。
1. 需要包含android.content.SharedPreferences包:
import android.content.SharedPreferences;
2. 保存数据到本地:
SharedPreferences settings = getSharedPreferences(PREFS_NAME, Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("CREATED_COUNT", ++mCreatedCount);
editor.commit();
(1) getSharedPreferences()中第一个参数PREFS_NAME是打开新的SF(Shared Preferences)文件名字,一般本地存储器上是以“名字+.xml“的文件格式来存储的,第二个参数设置打开SF文件的方式,有以下几种模式:
MODE_APPEND: 如果该文件已经存在,然后将数据写入,而不是抹掉它现有文件的末尾。
MODE_PRIVATE: 默认模式,创建的文件只能由应用程序调用,即为私有的,其他程序将无法查看该和更改配置内容
MODE_WORLD_READABLE: 允许所有其他应用程序有读取和创建文件的权限。
MODE_WORLD_WRITEABLE: 允许所有其他应用程序具有写入、访问和创建的文件权限。
(2) SharedPreferences并不提共更改存储配置信息的接口,通过获得 SharedPreferences.Editor对象,来更改存储数据,比如上面例子代码中putInt(),是更改存储一个值为CREATED_COUNT的整型数据信息到SF文件中,对于其它类型,可以用对应的API:
SharedPreferences.Editor putBoolean(String key, boolean value);
SharedPreferences.Editor putInt(String key, int value);
SharedPreferences.Editor putFloat(String key, float value);
SharedPreferences.Editor putLong(String key, long value);
SharedPreferences.Editor putString(String key, String value);
(3)不要忘记了commit()语句,否则设置的结果将不会保存到对应的SF文件中. 下面是commit执行后的SF文件的结果:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<int name="CREATED_COUNT" value="2" />
</map>
3. 从本地读取数据:
SharedPreferences settings = getSharedPreferences(PREFS_NAME, Activity.MODE_PRIVATE);
mCreatedCount = settings.getInt("CREATED_COUNT", 1);
(1) getInt() 读取CREATED_COUNT对应的值,如果SF文件中不存在该值,默认用1代替。