2015-02-23 83 views
0

我在我的Android清單如下代碼:廣播接收器被丟棄

<receiver android:name="com.DDD.CCC.BBB.AAA" > 
    <intent-filter> 
     <action android:name="android.intent.action.SIM_STATE_CHANGED" /> 
    </intent-filter> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter> 
</receiver> 

在第一次開機時,有時android.intent.action.SIM_STATE_CHANGED沒有收到,但有時它。

事件日誌,當廣播接收表明:

01-16 05:34:01.649 1230 1274 I am_proc_start: [0,3811,1000,com.DDD.CCC,content provider,com.DDD.CCC/.databases.XXX] 
01-16 05:34:01.659 1230 2798 I am_proc_bound: [0,3811,com.DDD.CCC] 
01-16 05:34:05.389 1230 1561 I am_kill : [0,3811,com.DDD.CCC,15,empty #14] 
01-16 05:34:05.389 1230 1242 I am_proc_died: [0,3811,com.DDD.CCC] 
01-16 05:34:11.899 1230 3470 I am_proc_start: [0,4642,1000,com.DDD.CCC,broadcast,com.DDD.CCC/.service.AAA] 
01-16 05:34:11.929 1230 1561 I am_proc_bound: [0,4642,com.DDD.CCC] 
01-16 05:34:16.579 1230 1242 I am_kill : [0,4642,com.DDD.CCC,15,empty #14] 
01-16 05:34:16.609 1230 1568 I am_proc_died: [0,4642,com.DDD.CCC] 
01-16 05:34:16.859 1230 1568 I am_proc_start: [0,5079,1000,com.DDD.CCC,broadcast,com.DDD.CCC/.service.AAA] 
01-16 05:34:16.889 1230 1274 I am_proc_bound: [0,5079,com.DDD.CCC] 
01-16 05:34:16.979 1230 2641 I notification_enqueue: [com.DDD.CCC,262082,NULL,0,Notification(pri=0 contentView=com.DDD.CCC/0x1090064 vibrate=null sound=null defaults=0x0 flags=0x10 kind=[null])] 
01-16 05:34:19.559 1230 2798 I am_kill : [0,5079,com.DDD.CCC,15,empty #14] 
01-16 05:34:19.559 1230 2642 I am_proc_died: [0,5079,com.DDD.CCC] 

當它不接受,那就說明如下:

01-16 05:41:29.809 1232 1506 I am_proc_start: [0,3793,1000,com.DDD.CCC,content provider,com.DDD.CCC/.databases.AAA] 
01-16 05:41:29.809 1232 2338 I am_proc_bound: [0,3793,com.DDD.CCC] 
01-16 05:41:36.939 1232 3326 I am_kill : [0,3793,com.DDD.CCC,15,empty #14] 
01-16 05:41:36.949 1232 3325 I am_proc_died: [0,3793,com.DDD.CCC] 
01-16 05:41:37.879 1232 1269 I am_proc_start: [0,4337,1000,com.DDD.CCC,broadcast,com.DDD.CCC/.service.AAA] 
01-16 05:41:37.899 1232 2339 I am_proc_bound: [0,4337,com.DDD.CCC] 
01-16 05:41:41.359 1232 1244 I am_kill : [0,4337,com.DDD.CCC,15,empty #14] 
01-16 05:41:41.369 1232 2355 I am_proc_died: [0,4337,com.DDD.CCC] 
01-16 05:41:41.369 1232 2355 I am_broadcast_discard_app: [0,1109557712,android.intent.action.SIM_STATE_CHANGED,21,ResolveInfo{428381d0 com.DDD.CCC/.service.AAA m=0x108000}] 

是的,我看到這個過程已經已經死了,它不會重新啓動。 有沒有人有任何線索爲什麼發生這種情況?

謝謝

+0

請從'onReceive()'發佈代碼。如果你在這個方法中做了太多的工作,Android將會殺死你的進程並轉向下一個進程。你不能在onReceive()中花費大量時間來做任何事情。 – 2015-02-23 17:43:38

+0

是的,但是這意味着至少onReceive會被達成並且被殺害嗎? 所以會發生的是,引導完成的廣播被記錄,但下一個(sim狀態改變)沒有達到onReceive。 所以,據我們所知,如果接收者做了太多的工作,它會殺死並移動到下一個(如果是第一個廣播,第二個將被調用,如果是第二個,則是第三個將被稱爲) 但問題是,第二個onReceive,有時它根本不被調用。 在接收到兩個廣播的過程中,這個過程是否有可能被終止? – Nakayama 2015-02-23 22:46:39

+0

類似的,第二個廣播正在排隊,而第一個廣播(引導完成)正在處理中。第一個廣播完成後,該過程被終止,第二個廣播被忽略。這有可能發生嗎? – Nakayama 2015-02-23 22:49:04

回答

1

如果你的onReceive過程需要更長的時間,廣播將是第三代ANR已經確認發生am_broadcast_discard_app接收第一或者第二廣播之後。