对于开机启动我想大家都不陌生了,就是向系统 注册一个消息监听(android.intent.action.BOOT_COMPLETED),然后对这个消息的处理就可以了(当然要先申请权限噢)。
我想说的是android.intent.action.BOOT_COMPLETED消息在某种情况下发非常慢,我遇到的是60秒后才收到这个消息。这会导致App启动非常慢,总让人觉得没有自动启动。
虽然消息慢的原因可能很多,但在此我只说一条就是静态IP也会引起此种现象。先说一下我的环境:Android 5.1 开发板。当把设备设置为静态IP同时网内又没有DHCP的话(比如只有一个开发板+小交换)这种状态下消息会收到的很慢。
解决方法有两种:
- 把小交换换成路由,IP设为动态获取。
- 把 android.intent.action.BOOT_COMPLETED 监听换成 android.media.AUDIO_BECOMING_NOISY。
这样就会快很多。android.media.AUDIO_BECOMING_NOISY 的解释是设备启动后要播放启动声音了,通知大家不要干扰。监听此消息可以加快启动速度但还有一点就是此消息广播时有此外设还未就绪。不过串口、网络都已就绪。
另外还有最重要的一点就是 android.media.AUDIO_BECOMING_NOISY 不需要权限。