android 應用中止後沒法接收到廣播

應用退出沒法接收到廣播。 在android3.1之後的版本中,若是程序被強制中止後應用狀態會被標記爲STOPPED,此時應用沒法收到其餘應用的廣播,要等到應用再開啓一次,將STOPPED去掉之後才能夠。除此以外還有一個解決方法以下:android

解決辦法:ui

在廣播發發送方發送廣播時須要設置Intent.FLAG_INCLUDE_STOPPED_PACKAGES開發

示例代碼:get

Intent intent = new Intent(); intent.setAction("com.leeliwei.test.receiver.action.test"); if (android.os.Build.VERSION.SDK_INT >= 12) { intent.setFlags(32);//3.1之後的版本須要設置Intent.FLAG_INCLUDE_STOPPED_PACKAGES } sendBroadcast(intent); 參照代碼再多說兩句高低版本兼容問題,if判斷中爲何寫>=12而不是大於>= android.os.Build.VERSION_CODES.HONEYCOMB_MR1這種常量形式。答案是個人sdk兼容從2.2版本開始的,若是寫成常量形式的會報編譯錯誤,若是調高了targetVersion(開發綁定版本),雖然編譯沒有錯誤,但在低版本運行時,會由於找不到那個常量值兒報異常終止,因此建議使用數字12。同理,intent.setFlags(32)中沒有直接寫常量也是這個緣由,Intent.FLAG_INCLUDE_STOPPED_PACKAGES是3.1版本時纔有的。低版本會報錯。io

相關文章
相關標籤/搜索