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

一、需求说明:

开发过程经常会保存一些全局属性提供给其他应用读取,这篇主要讲常用的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表中,直到系统恢复出厂设置,属性会还原为默认值。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AndroidSettingsProvider是一个系统级应用程序,用于管理设备的设置信息。当Android系统升级时,SettingsProvider也会相应地进行升级。 首先,升级会带来一些新的设置选项。随着Android版本的更新,新的功能和特性将被引入到系统中,这些功能和特性将需要对应的设置选项来进行配置。因此,SettingsProvider需要进行升级,以支持这些新的设置选项。 其次,升级还会修复一些已知的问题和漏洞。在旧版本的SettingsProvider中可能存在一些bug或者安全漏洞,这些问题会被逐步修复和解决。升级后的SettingsProvider将包含修复后的代码,以提高系统的稳定性和安全性。 此外,升级还可能会改变SettingsProvider的数据结构或存储方式。为了满足新的需求和功能,SettingsProvider的数据存储可能需要进行调整和优化。这可能涉及到数据库表结构的更改或者数据存储的格式改变等。 最后,升级还可能会提供更好的性能和响应速度。随着系统的发展,我们对设备的性能和用户体验的要求也在不断提高。升级后的SettingsProvider可能会经过优化,以提供更快的数据查询和更新速度,从而使用户的设置操作更加流畅和高效。 综上所述,Android系统的升级会带来SettingsProvider的升级,以支持新的设置选项、修复问题和漏洞、改变数据结构和存储方式,并提供更好的性能和响应速度。这些升级将不断提高Android设备的功能和使用体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值