Android快速监听手机是否关机/重启过

Android注册静态BroadcastReceiver可以监听到开机/关机/重启的状态.但是,关机的广播有的时候收不到,开机的广播延时特别大,体验不是很好.所以可以根据SystemProperties的各种属性的特征来解决开机广播接收慢的问题.

方法为SystemProperties.set(String key, String value);

key的属性有多种:

1.如果属性名称以“ro.”开头,那么这个属性被视为只读属性。设置之后,属性值不能改变。

2.如果属性名称以“persist.”开头,当设置这个属性时,其值也将写入/data/property。(一般需要系统权限.将应用提升到系统应用的方法:(1)在AndroidManifest.xml中,在manifest加入android:sharedUserId="android.uid.system "。
(2)在Android.mk中,將LOCAL_CERTIFICATE := XXX修改成LOCAL_CERTIFICATE :=platform。)

3.如果属性名称以“net.”开头,当设置这个属性时,“net.change”属性将会自动设置,以加入到最后修改的属性名。这个属性的特性是重启之后就被抹掉,恢复到默认值.

根据上述的三个属性就可以知道,假设说我们设置"net."开头的属性,重启之后,值被恢复,就可以知道,做了重启操作.解决了关机广播不稳定,开机广播接收延迟的问题.

适用于一些非重启不能设置的场景.

代码:

设置:
public static final String NEED_REBOOT = "net.need.reboot";//只要net.开头就好,剩下的可以自定义
public static final String IS_SET = "true";//根据自己喜好定义
SystemProperties.set(NEED_REBOOT_KEY, IS_SET);//存值

取值:

String isReboot = SystemProperties.get(NEED_REBOOT_KEY);
if (!TextUtils.equals(IS_SET, isReboot)) 就代表,已经关机/重启过了,就可以做相应的操作了.

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值