2012-03-05 78 views
0

如何知道在後臺運行的應用程序(而不是活動)?Android應用程序是否在後臺運行?

我正在開發一個報警應用程序。有三項活動A,B,C。 A是主要的應用程序屏幕。用戶從A移動B.當B到達前臺時,報警被登記。當B完成時,警報被移除。當接收器收到來自AlarmManager的通知時,它會調用活動C.在C用戶可以延後停止報警。

我的問題是當我的應用程序轉到後臺時,它不應該發出警報。我想刪除已註冊的鬧鐘。我不能重寫B的onPause來刪除已註冊的鬧鐘,因爲當接收器收到來自鬧鐘管理器的通知時,它會將C調用到前景,並且B將移動到後臺。如果我在B的​​onPause中取消註冊鬧鐘,它在這種情況下不會響鈴。

如何知道應用程序在後臺運行(沒有任何活動都在前臺),然後預先防止調用C.

感謝

+1

您可以使用布爾值0或1.當一個活動開始時將其設置爲1並將其傳遞給下一個活動。在下一個活動中檢查布爾值是什麼,如果它的1,它仍然在運行。否則啓動它。 – 2012-03-05 08:31:55

+0

謝謝你的回覆@ Rashmi.B – ADD 2012-03-05 09:17:24

回答

0

當你的應用程序運行時,它的狀態將可在ActivityManager.RunningAppProcessInfo。該類包含當前在系統中運行的進程。進程名稱只是應用程序的包名稱。有關更多詳細信息,請參見this answer

+0

謝謝你的回覆@AndroDev – ADD 2012-03-05 09:18:47

+0

它對你有沒有幫助?讓我們知道您是否得到了您的解決方案。 – AndroDev 2012-03-05 09:26:27

+0

我試了鏈接中的代碼,但檢查總是返回true。我在我的報警接收器中打了支票。情景就像...!)。設定鬧鐘。然後到達註冊該警報的活動B.然後按手機上的主頁按鈕將應用程序發送到後臺。當警報接收器收到廣播時,它會檢查RunningAppProcInfo。但有顯示該應用程序正在運行forground – ADD 2012-03-05 11:39:48

0

您應該在活動B的onStop方法上取消註冊警報,當您的活動B被銷燬時它將被調用,或者可以在活動B被銷燬時調用的活動B的onDestroy上取消註冊警報。

+0

當Activity被破壞時調用onDestry,是不是?當用戶按手機上的主頁按鈕時,我想取消註冊警報。我希望在按下主頁按鈕時調用onPause。但是我不能使用onPause,因爲當報警接收器收到來自AlarmManager的廣播消息時,它會調用另一個活動,將活動B推到後臺。 – ADD 2012-03-05 11:53:46