2013-03-31 35 views
0

我開發2.2.2一個應用程序,並需要採取一定的措施,當屏幕空白,用戶按下「家」等活動的生命週期 - 必要區分暫停導致

大部分是罰款:當屏幕空白時,onPause()被調用,然後onResume()在空白處,並且如果home被按下,則它進入onPause(),onStop()等。

然而,對於主要活動來說都是如此,從啓動活動開始,似乎並不適用於次要活動。

屏幕空白/非空白按預期工作,但是在'home'鍵上按下onPause()而不是onStop(),然後重新啓動應用程序會導致onResume()。我不能區分屏幕空白和回到主屏幕從這個次要活動,我需要,原因是我需要執行某些行動回家,但不是在一個屏幕空白。

我該怎麼做才能發現?

+0

而不是試圖監聽活動回調方法來找出屏幕的狀態,你應該使用這個意圖過濾器:https://developer.android.com/reference/android/content/Intent.html# ACTION_SCREEN_OFF – hwrdprkns

+0

這裏是一個例子:在Android上監聽ACTION_SCREEN_OFF - http://stackoverflow.com/questions/11346958/listening-for-action-screen-off-on-android – Tigger

+0

謝謝,很有用。我在想ACTION_USER_BACKGROUND/FOREGROUND可能是我需要的。我會試驗。 – nmw01223

回答

0

事實上,這樣做的最好方法已被證明使用onUserLeaveHint()。當按下主屏幕時,這會從輔助活動中調用 - 至少在API級別8上。

0

捕獲home按鈕按下事件不能這樣做,這是故意的,所以你不能阻止它。

如果你堅持捕獲它,你將需要使你的應用程序成爲一個啓動器,而不是一個簡單的應用程序。

至於其他事件,您需要知道許多方法只會告訴您發生了什麼,但不會觸發它們。

爲此,您必須自己弄明白。

例如,如果您參加了其他活動,則可以將其存儲在標誌中,表示您已經參加了其他活動。如果您需要知道自己已經從第二項活動返回到第一項活動,則應該使用startActivityForResult開始第二項活動,稍後您將檢查結果(並將其設置爲第二項活動)。

如果您想避免活動切換,請考慮使用片段。

順便說一句,你可能也想看看方法onWindowFocusChanged

+0

一般而言,每當您找到符合您需求的答案並且您認爲答案已回答您的問題時,請將其勾選爲「已答覆」(單擊「V」按鈕)。 –