Android SharedPreferences用法及程序共享机制

来源:互联网 发布:喷墨打印机清洗软件 编辑:程序博客网 时间:2024/06/05 09:33

另外,在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.Editorcontains(String key)判断是否包含该键值getAll()返回所有配置信息MapgetBoolean(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()返回所有配置信息MapputBoolean(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)删除该键对应的值
3、其他程序访问本程序的配置数据方式
通过SharedPreferences创建的配置文件,不需要指定路径和文件后缀名,读取的时候也是。通常情况下,配置只是提供给本应用程序使用的。在这里我们介绍一个小知识点,即其他程序想使用本应用程序的配置,那应该如何使用SharedPreferences呢?如下:
Context otherAppContext = createPackageContext("com.gary.appdisplaycontrol", Context.CONTEXT_IGNORE_SECURITY);
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 

0 1
原创粉丝点击