關於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確實實現了更早的將應用開啓的效果.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章