本文共 3785 字,大约阅读时间需要 12 分钟。
一.Preference的简介
Preference(配置)提供了一种轻量级的数据存取方法,主要应用于数据比较少的配置信息。它以“key-value”(是一个Map)对的方式将数据保存在一个XML配置文件中,例如,手机的开机问候语,可以将其以Preference方式来进行配置。也可以保存一些用户个性化设置的字体、颜色、位置等参数信息。
二.Preference存取数据的方法
使用到的接口:
SharedPreferences接口和SharedPreferences.Editor接口,它们都是来自于andorid.content包。
①SharedPreferences接口提供保存数据的方法
我们可以调用Context.getSharedPreferences(String name,int mode)方法得到SharedPreferences接口。该方法的第一个参数是文件名称,第二个参数是操作模式。操作模式有三种:
SharedPreferences接口的常用方法
方法名称
方法描述
edit()
返回SharedPreferences的内部接口SharedPreferences.Editor
contains(String key)
判断是否包含该键值
getAll()
返回所有配置信息Map
getBoolean(String key,Boolean defValue)
获得一个boolean值
getFloat(String key,float defValue)
获得一个float值
getInt(String key,int defValue)
获得一个int值
getLong(String key,long defValue)
获得一个long值
getString(String key,String defValue)
获得一个String值
②SharedPreferences.Editor接口提供获得数据的方法
SharedPreferences.Editor接口中的getString(String key,String defValue)、getInt(String key,int defValue)等。调用SharedPreferences的edit()方法返回SharedPreferences.Editor内部接口,该接口中提供了保存数据的方法,如putString(String key,String value)、pubInt(String key,int value)等,调用该接口的commit方法可以将数据进行保存。
SharedPreferences.Editor接口常用的方法
方法名称 | 方法描述 |
clear() | 清楚所有值 |
commit() | 保存 |
getAll() | 返回所有配置信息Map |
putBoolean(String key,Boolean value) | 保存一个boolean值 |
putFloat(String key,float value) | 保存一个float值 |
putInt(String key,int value) | 保存一个int值 |
putLong(String key,long value) | 保存一个long值 |
putString(String key,String value) | 保存一个String值 |
remove(String key) | 删除该键对应的键 |
下面是保存临时记事本内容的例子
当我们在手机上用记事本编写备忘录,日志的时候,突然要返回接电话,看短信的时候。我们就要停止编写,退出去听接电话,看短信。然而,当我们打完电话或者看完短信回来的时候,发现刚刚编写的内容还在记事本上,这就是Preference的作用了。
创建一个Activity,在其中放置一个EditText保存短信内容,放置一个Button用于发送信息。在onCreate()中通过getSharedPreferences()方法获得SharedPreferences接口,调用接口的getString()方法,获得保存内容,将内容设置到EditText中。
在onStop()方法中保存内容,使用getSharedPreferences().edit()方法获得SharedPreferences.Editor接口,调用SharedPreferences.Editor的putString()方法保存短信内容,调用commit()方法提交内容。
MainActivity.java
main.xml
效果图:
当我们退出屏幕再返回的时候,发现原来备忘录里编辑了一半的内容还在那里,其实它是把要保存的内容做诶XML文件保存在/data/data/package/shsared_prefs/下面了。
本文转自 lingdududu 51CTO博客,原文链接: http://blog.51cto.com/liangruijun/658521
转载地址:http://melia.baihongyu.com/