Android 全局属性的保存方式-SettingsProvider

本文介绍了如何使用SettingsProvider在Android应用中保存和读取系统属性开关,如节能模式,以及其分类、使用场景、API操作和数据存储结构。

一、需求说明:

开发过程经常会保存一些全局属性提供给其他应用读取,这篇主要讲常用的SettingsProvider。

二、使用场景:

一些系统属性的开关状态常用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);
} 

四、SettingsProvider相关知识:

1)SettingsProvider对数据进行了分类,分别是Global、System、Secure三种类型,它们的区别如下:

  • Global:所有的偏好设置对系统的所有用户公开,第三方APP有读没有写的权限
  • System:包含各种各样的用户偏好系统设置;
  • Secure:安全性的用户偏好系统设置,第三方APP有读没有写的权限

2)使用特点:

  • SettingsProvider只接受int、float、string等基本类型的数据;
  • SettingsProvider由Android系统framework进行了封装,使用更加快捷方便;
  • SettingsProvider的数据由键值对组成。

3)adb调试设置获取方法:

  • 设置方法:adb shell settings put global light_switch 1;
  • 获取方法:adb shell settings get global light_switch ;

4)数据存放位置:

  • 在Android 6.0版本时,SettingsProvider被重构,Android从性能、安全等方面考虑,把SettingsProvider中原本保存在settings.db中的数据,目前全部保存再XML文件中;
  • 系统查看路径:/data/system/users/0。

5)清空时机:
数据写入后,会一直保存在Setting表中,直到系统恢复出厂设置,属性会还原为默认值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值