2014-04-14 31 views
0

我想在Android應用程序重新啓動或重新啓動時收到通知。棘手的部分是,我不在乎切換應用程序內的活動時出現的事件。我感興趣的事件是:當應用程序重新啓動時,我是否會收到Android廣播或事件

  • 應用程序啓動
  • 應用程序上的任何活動激活(由用戶帶回前)

我試圖與onStart()onResume()處理它方法,但他們每次加載Activity時都會觸發,即使在應用程序內切換活動時也會調用onStop

我檢查了生命週期(http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle),但即使是onDestroy()僅在應用程序內切換活動時被調用。

  • 如何確定我的應用程序是否已重新激活或只是切換活動?
+0

嗯,只是一個想法,你可以覆蓋應用程序http://www.devahead。com/blog/2011/06/extends-the-android-application-class-and-dealing-with-singleton/http://developer.android.com/reference/android/app/Application.html,然後註冊你的applicationLifecycleCallbacks http://developer.android.com/reference/android/app/Application.ActivityLifecycleCallbacks.html並在你的應用程序中處理它 –

回答

0

你必須覆蓋Application類爲**App is started**這將每次應用程序打開時調用一次。

0

想到兩種可能的解決方案,它們都不是很乾淨。

1)使用定時器

onPause()方法每一次,你安排一個計時器,經過1秒(或更長的東西設置一個標誌,取決於你的具體使用情況)。在每個onResume()中,檢查是否已設置標記,例如您的應用程序已處於非活動狀態的時間超過計時器間隔如果設置了標誌,你知道該用戶沒有手動設置

你在你的應用程序觸發Activities之間的切換每次標誌onPause()onResume()

2)之間的別的東西,你設置一個標誌的地方在你的應用程序。在您的onResume()方法中,檢查是否設置了標誌,例如該開關是由您的應用程序觸發的。如果沒有設置,用戶來自您的應用程序之外。

但是,這兩種方法都不能區分可能的用例之間的任何其他方面。所有這些情況看起來你也一樣:

  • 用戶按下主頁按鈕,在任何時候恢復應用程序後
  • 用戶關閉屏幕,並再次重新
  • 用戶得到一個電話,然後立即返回到您的應用程序

這可能會導致您的應用程序不受歡迎的行爲。我不知道你到底想要使用這種機制,但是你必須非常努力地思考所有可能的情況,如果你想讓它們觸發你的行爲,或者不想。

相關問題