2013-07-03 68 views
0

我的應用程序爲每個活動註冊一個BroadcastReceiver,它檢測SCREEN_OFF狀態。但是,如果我在onPause()中註銷接收器,它永遠不會觸發。我認爲它可以通過onPause()取消註冊,然後它可以接收SCREEN_OFF廣播。在這種情況下,我應該在哪裏註銷接收器?我應該在哪裏註銷屏幕關閉BroadcastReceiver?

在清單中註冊接收者應該適合我的應用程序的目的,但是我在某處讀取的Intent.ACTION_SCREEN_OFF不能以這種方式註冊。

回答

0

這樣的接收器幾乎沒有用處,因爲屏蔽通常會導致活動被暫停。這些對於像Service這樣的背景組件很有用,它可以在屏幕關閉時暫停。

屏幕可以根據需要也可檢測狀態:

PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE); 
    boolean isScreenOn = pm.isScreenOn(); 
1

在onDestroy()方法中取消註冊接收方。所以一旦活動被破壞,接收者就會被取消註冊。

+0

您好,感謝您的答覆,但如果我是正確的,的onDestroy()不會被當一個新的活動進入前臺叫(除非我打電話給完成(),我不想這樣做)。 – Sam

+0

當新活動進入前臺時,不會調用destroy。 –