Android(安卓)SharedPreferences用法及程序共享机制
另外,在Android中各个应用程序组件之间是相互独立的,彼此的数据不能共享。为了实现数据的共享,Android提供了Content Provider组件来实现应用程序之间数据的共享。但是SharedPreferences通过处理也可以实现数据共享。
1、Preference简介
Preference提供了一种轻量级的数据存取方法,应用场合主要是数据比较少的配置信息。它以“键-值”(是一个Map)对的方式将数据保存在一个XML配置文件中。例如,我们设置了一个手机开机问候语,可以将其以Preference方式来进行配置。
使用Preference来存取数据,用到了SharedPreferences接口和SharedPreferences的一个内部接口SharedPreferences.Editor,这两个接口在android.content包中。
调用Context.getSharedPreferences(String name,int mode)方法得到SharedPreferences接口。该方法的第一个参数是文件名称,第二个参数是操作模式。操作模式有三种:MODE_PRIVATE(私有)、MODE_WORLD_READABLE(可读)、MODE_WORLD_WRITEABLE(可写)。
SharedPreferences提供了获得数据的方法,如getString(String key,String defValue)、getInt(String key,int defValue)等。调用SharedPreferences的edit()方法返回SharedPreferences.Editor内部接口,该接口中提供了保存数据的方法,如putString(String key,String value),putInt(String key,int value)等,调用该接口的commit()方法可以将数据进行保存。SharedPreferences和SharedPreferences.Editor的常用方法如下表:
2、SharedPreferences常用方法
方法名称 | 方法描述 |
edit() | 返回SharedPreferences的内部接口SharedPreferences.Editor |
contains(String key) | 判断是否包含该键值 |
getAll() | 返回所有配置信息Map |
getBoolean(String key,boolean defValue) | 获得一个Boolean值 |
getFolat(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常用方法
方法名称 | 方法描述 |
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) | 删除该键对应的值 |
SharedPreferences sharedPreferences = otherAppContext.getSharedPreferences("preferences",Context.MODE_WORLD_READABLE|Context.MODE_MULTI_PROCESS); 备注:必须要添加 Context.MODE_MULTI_PROCESS属性,否则会遇到其他程序读取数据未更新问题 。
4、 配置数据的 内容以XML文件保存到了/data/data/$Packagename$/shared_prefs下面 可以通过adb查看:
adb shell root@8312_kk:/data/data/com.gary.appdisplaycontrol/shared_prefs # cat app_no_display_apps_list.xml
更多相关文章
- TextView使用android:autoLink="web"但又不打算跳转外部浏览器
- [Android] Android应用插件式开发解决方法
- 【Android(安卓)界面效果10】Android中View,ViewGroup,Window之
- Firemonkey扩展增强:Android(安卓)浏览器支持Input file标签上传
- Android知识梳理之Sqlite数据库的使用和优化
- 【笔记】【从Android(安卓)Guide温习Android(安卓)三】意图 (Int
- 深入解读Android的内部进程通信接口AIDL
- 给android系统添加自己想要的属性
- Android以太网框架情景分析之NetworkFactory与NetworkAgent深入