关于APP接收开机广播延迟问题,解决开机启动慢问题

       我们知道在Android中我们可以监听开机广播(android.intent.action.BOOT_COMPLETED)来实现开机自启动,当然能够实现开机自启动的前提条件是该应用至少已经被手动启动过一次,但是这样任然会出现一些问题,比如如果我们接收广播的优先级比较低那么我们开机之后APP启动就会比较靠后,但是既然设置为开机启动呢,那么我们肯定是希望自己的APP越早被启动越好的,基于这种情况我们可以调整接收广播的优先级,在官方文档中我们看到android:priority的默认值为0 取值范围围-1000到1000,priority的值与其等级是成正比的.但是在某些情况下我们发现即使将priority的等级设置为1000还是有些应用可以在我们之前启动,比如360手机助手,那么我们通过对360手机助手反编译查看其AndroidMainfest.xml文件来看发现360手机助手对其中一个监听开机广播的广播接受者的处理很有意思

      如下所示为360手机助手的相关代码

<receiver android:enabled="true" android:exported="true" android:name="com.qihoo.receiver.CoreBroadcastReceiver" android:process="com.qihoo.daemon">
    <intent-filter android:priority="2147483647">
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
        <action android:name="com.qihoo.appstore.ACTION_DAEMON_CORE_SERVICE"/>
        <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
        <action android:name="android.intent.action.PHONE_STATE"/>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.PACKAGE_ADDED"/>
        <action android:name="android.intent.action.PACKAGE_REPLACED"/>
        <action android:name="android.intent.action.PACKAGE_REMOVED"/>
        <data android:scheme="package"/>
    </intent-filter>
</receiver>

在这段代码中我们可以看到他将priority的优先级设置为了2147483647,这显然是不符合官方文档的要求的在我们Android学习中我们知道当priority的值大于1000的时候会默认使用1000作为priority的值,但是2147483647确实实现了更早的将应用开启的效果.

 

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值