需求说明: 开发过程经常会保存一些全局属性提供给其他应用读取,这篇文章把平时用到属性保存方式总结下。
1、SettingsProvider 使用方式: 1、定义出常量
public static final String LIGHT_SWITCH_PROP = "light_switch";
public static final int LIGHT_SWITCH_ON = 0;
public static final int LIGHT_SWITCH_OFF = 1;
2、属性值获取方式
public static int getLightSwitchProp(Context context) {
int result = Constants.LIGHT_SWITCH_OFF;
if (context == null) {
Log.e(TAG, "getLightSwitchProp context is null");
} else {
result = Settings.Global.getInt(context.getContentResolver(), Constants.LIGHT_SWITCH_PROP);
}
return result;
}
3、属性值变化监听类
class SettingSwitchStateObserver extends ContentObserver {
public SettingSwitchStateObserver(Handler handler) {
super(handler);
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
int lightState = CommonUtils.getLightSwitchProp(mContext);
//DOTO do some thing...
}
}
4、初始化和取消监听(分别在界面启动和销毁的生命周期方法中调用就行)
private void registerSettingProvider() {
settingSwitchStateObserver = new SettingSwitchStateObserver(new Handler());
mContext.getContentResolver().registerContentObserver(
Settings.Global.getUriFor(Constants.LIGHT_SWITCH_PROP), true, settingSwitchStateObserver);
}
private void unregisterSettingProvider() {
mContext.getContentResolver().unregisterContentObserver(settingSwitchStateObserver);
}
5、SettingsProvider相关知识:
1)SettingsProvider对数据进行了分类,分别是Global、System、Secure三种类型,它们的区别如下:
- Global:所有的偏好设置对系统的所有用户公开,第三方APP有读没有写的权限;
- System:包含各种各样的用户偏好系统设置;
- Secure:安全性的用户偏好系统设置,第三方APP有读没有写的权限。
2)使用特点:
- SettingsProvider只接受int、float、string等基本类型的数据;
- SettingsProvider由Android系统framework进行了封装,使用更加快捷方便;
- SettingsProvider的数据由键值对组成。
3)数据写入清空时机: 数据写入后,会一直保存在Setting表中,直到系统恢复出厂设置,属性会还原为默认值。
|