2014-09-23 88 views
3

我想擁有一個BroadcastReceiver,它必須永遠處於活動狀態(100%)。現在,如果我已經在Android清單中註冊了這種情況,或者當Android應用程序本身被Android框架銷燬時它會被殺死?廣播接收機的生命週期

現在,我也有一個服務一直在前臺運行。這將確保我的應用程序永遠不會被銷燬嗎?反過來,這將確保在Android清單中註冊的接收器將永遠保持活動狀態。

回答

5

a BroadcastReceiverdocs)在清單上始終處於活動狀態,即使活動不再運行(考慮每次打開電話時觸發的意向操作的接收器),它都能正常工作。 只有在應用程序運行時才能使用定義和註冊的接收器(例如LocalBroadcastManagerregisterReceiver(...)方法)。

receiver element documentation參見其中指出:

聲明一個廣播接收機(一個BroadcastReceiver子類)作爲 一個應用程序的組件。廣播接收器使應用程序 能夠接收由系統或其他應用程序廣播的意圖,即使應用程序的其他組件不是 正在運行。

Documentation about services說:

前臺服務是一個被認爲是東西 用戶正在積極瞭解並因此不是候選人爲系統 殺時內存

低服務

因此,系統很可能不會終止服務所涉及的正在運行的應用程序。

所以它只是能夠閱讀文檔,我認爲這是對Android平臺的超級詳盡。

+0

只是希望在更高版本的Android上添加該功能,清單中的BroadcastReceivers在該應用運行至少一次之前不會處於活動狀態。 – Albin 2014-09-23 11:03:19

+0

感謝fiipi準確的答案。我已經閱讀過文檔,但文檔日益增多,大量不必要的信息被添加。我將它與非常明確的初始文檔進行比較。我也在我的問題中提到過這個問題,但它已被編輯:)再次感謝。 – 2014-09-27 06:58:11

+0

有沒有辦法禁用/重新啓用靜態註冊的broadcastreceiver?我想在wifi掃描完成時收到通知,但只有在我的應用程序中啓用某些切換時纔會收到通知。似乎矯枉過於靜態註冊,所以即使在應用程序中的切換意味着我不採取任何行動,每次掃描完成〜10-20秒時,都會觸發onReceive()。 – BoomShaka 2015-03-26 23:11:28