6.1 保存键值对

如果需要保存少量的键值对,可以使用SharedPreferences接口族。一个SharedPreferences对象指向一个包含若干键值对的文件,并提供基本的读写操作接口。SharedPreferences文件由框架管理,可以设成私有或者共享。

本节介绍通过SharedPreferences接口族来实现简单内容的存储和加载。

注意:SharedPreferences接口族与Preferences接口族不同,仅适用于键值对的读写,用于帮助开发者构建应用软件配置的用户接口。设置指南提供了Preferences接口族的详细介绍。

获取一个SharedPreferences的句柄

可以通过下列两种方法创建一个新的共享的偏好设置或者对一个既有文件进行读写:

  • getSharedPreferences()  如果开发者需要多个共享的偏好设置文件,这个接口可以通过应用软件任意context调用,通过接口第一个参数指定偏好设置的名称。
  • getPreferences() 如果Activity只需要一个偏好设置文件,使用这个接口获取唯一的文件而无需指定名称。

例如,下面展示了Fragment内部一段代码,代码通过资源字符串R.string.preference_file_key获取共享的偏好设置文件,使用私有模式打开文件从而确保只有本应用软件才能访问该文件。

Context context = getActivity(); 
SharedPreferences sharedPref = context.getSharedPreferences( 
        getString
(R.string.preference_file_key),Context.MODE_PRIVATE);

为文件命名时需注意保持文件名的唯一性,如“com.example.myapp.PREFERENCE_FILE_KEY”。

如果只需要一个偏好设置文件,则可以使用getPreferences()方法。

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);

警告:以MODE_WORLD_READABLE或者MODE_WORLD_WRITEABLE方式创建的共享偏好设置文件,能够被任意应用软件存取。

写共享文件

调用SharedPreferences的edit()方法创建SharedPreferences.Editor即可对共享偏好设置文件进行写操作。

将期望写入的键值对传递给putInt()或者putString()方法,然后调用commit()即可保存修改。例如:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedPref.edit(); 
editor
.putInt(getString(R.string.saved_high_score), newHighScore); 
editor
.commit();

读共享文件

调用getInt()或者getString()方法,并以目标键为参数可以从一个共享的偏好设置文件中获取相关值,如果目标键不存在则返回一个默认值,例如:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 
int defaultValue = getResources().getInteger(R.string.saved_high_score_default); 
long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue);

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值