兄弟们,我又来了,上一篇刚刚总结完Android 开机自启动实战问题,今天就来聊聊开机启动延迟缓慢的问题。
这里我也百度了一些文章,大概的参考了一下,并把其中缘由都基本了解,并且也进行了实战演练。
我们开机自启无非就是通过监听
开机广播(android.intent.action.BOOT_COMPLETED
)来实现开机自启动,这里关于开机自启就不做概述,想了解的可以去参考我上一篇的文章。其实开机延迟几秒
或者20秒
等,问题并不是出在我们发送广播的时候,而是在接收广播的问题上
查阅官方文档:文档中概述说是广播的
优先级
比较低,android:priority的默认值为0 取值范围围-1000到1000
,然后参阅别人反编译360手机助手,android:priority设置的是2147483647
然后个人通过不同机型的手机,调整优先级,在调试过程中,不得不感慨不同版本的手机,以及不同机型产生的结果差异大不相同
,下面是不同机型的开机自启时间对比
,大家可以参考一下:
方式一:
<receiver
android:name=".receiver.AutoStartBroadReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>
红米手机 Redmi 6A 安卓version 9 34s
华为手机 DUA-AL00 安卓version 8.1.0 38s
华为手机 Honor 9i 安卓version 9.1.0 51s
VIVO手机 vivo iQOO 安卓version 11 31s
方式二:
<receiver
android:name=".receiver.AutoStartBroadReceiver"
android:exported="true">
<intent-filter android:priority="2147483647">
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>
红米手机 Redmi 6A 安卓version 9 18s
华为手机 DUA-AL00 安卓version 8.1.0 19s
华为手机 Honor 9i 安卓version 9.1.0 34s
VIVO手机 vivo iQOO 安卓version 11 16s
方式三:
<receiver
android:name=".receiver.AutoStartBroadReceiver"
android:exported="true">
<intent-filter android:priority="1000">
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>
红米手机 Redmi 6A 安卓version 9 22s
华为手机 DUA-AL00 安卓version 8.1.0 17s
华为手机 Honor 9i 安卓version 9.1.0 32s
VIVO手机 vivo iQOO 安卓version 11 17s
到这里大家基本上也就清楚了,自己适合哪一种方式,解决开机自启的延时问题,虽然不能直接实现我们想要的结果,但是从根本问题上提前了几秒,快了那么几秒。
总结
我在参阅文章的同时,找到一篇通过监听开机铃声,然后实现开机自启
的方法,但是需要fw的帮忙,这个就看大家的意愿了,这个目前没有做实质性的实战,大家可以去参阅一下大佬的文章《android 开机广播接收慢处理方式》。另外一种处理方式也是要fw的帮忙,在上一篇文章中我总结了,大家自己去参阅就行了,不做详细介绍。
如若大家还有更好的解决办法,欢迎留言探讨,我们共同进步!