Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 4.0及以上版本接收開機廣播BOOT_COMPLETED、開機自啟動服務

Android 4.0及以上版本接收開機廣播BOOT_COMPLETED、開機自啟動服務

編輯:關於Android編程

情景概要:自己做的一個項目的時候,獲得不到開啟啟動的通知,這樣更別說開機啟動通知裡面實現開機服務功能了,查找了N多資料,說法不一,太多的人說4.0之後無法獲得開機通知,通過各種渠道,請求各方大牛的幫助解決辦法的方式仍然是那些N多人說不可行的方法,即使大牛給的是英文文檔也是說這樣可以的。

最後發現,開啟啟動通知已經實現了,但是自己的疏忽沒有發現,我通過在通知裡面彈出一個Toast,但是真機或者模擬器在開機的時候都需要很多啟動項,導致最後的Toast彈出很晚,而自己卻沒看見,或者說開機後已經鎖屏了,鎖屏後彈出的Toast是看不到的。你可以在通知裡面彈出10個以上的Toast,測試一下,發現通知確實啟動了,只是時間慢了些。有人說不同的機型下還是得不到開機啟動通知,我還了三款手機測試,均通過。


下面是轉載的一篇測試版,大家可以簡單測試。

幾個月來看到CSDN上看到很多朋友發帖詢問開機自動啟服務的問題,也就是BOOT_COMPLETED廣播的問題,有的人說開機能收到廣播,有的人又說開機收不到廣播,這裡本人親自試驗並總結分享給大家!

原來,在3.1之後,系統的PackageManager增加了對處於“stopped state”應用的管理, 這個stopped和Activity生命周期中的stop狀態是完全兩碼事,包管理器中的stopped state指的是安裝後從來沒有啟動過或者是被用戶手動強制停止的應用。這點大家可以到“設置”——>"應用程序",查看任何一個安裝的應用,看看“行停止”這個按鈕是否變灰就知道了。系統增加了2個Flag:FLAG_INCLUDE_STOPPED_PACKAGES和FLAG_EXCLUDE_STOPPED_PACKAGES , 來標識一個intent是否激活處於“stopped state”的應用。當2個Flag都不設置或者都進行設置的時候,采用的是FLAG_INCLUDE_STOPPED_PACKAGES的效果。有了上面的新機制之後, google覺得給所有的廣播intent默認加上FLAG_EXCLUDE_STOPPED_PACKAGES會非常的Cooooool,能在一定程度上避免流氓軟件、病毒啊干壞事,還能提高效率,就導致了RECEIVE_BOOT_COMPLETED廣播如果用戶沒有運行過應用或者在設置中強行停止了應用, 就不會接BOOT_COMPLETED廣播。
總而言之:要想獲得開機廣播,你必須保證兩點,1)你的應用程序在安裝後必須運行一次;2)你的應用程序沒有被強行停止




那麼如果要實現開機自啟動服務,該怎麼實現?直接上源碼

1、BootCompletedReceiver.java文件

public class BootCompletedReceiver extends BroadcastReceiver {  
  
    @Override  
    public void onReceive(Context context, Intent intent) {  
        // TODO Auto-generated method stub  
        Log.d("LibraryTestActivity", "recevie boot completed ... ");  
        context.startService(new Intent(context, TestService.class));  
    }  
}  


配置文件中:

  
  
  
        
            
      
  

注意,一定要加上權限,否則就收不到廣播咯。



3、安裝應用到你的手機後,啟動一次該應用,那麼下次開機就能收到BOOT_COMPLETED廣播,並且就能看到TestService服務啟動了。


做了個測試:到設置——>應用程序,找到剛才安裝的應用,點擊“強行停止”,那麼重啟手機後,就收不到BOOT_COMPLETED廣播了。
如果該應用被有些三方安全軟件強制殺掉進程後,重啟手機也會收不到BOOT_COMPLETED廣播。





  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved