2012-11-02 33 views
0

我有一個鬧鐘應用,我認爲使用AlarmManagerBroadcastReceiver以標準方式進行編程。我甚至添加了代碼,以便警報在重新啓動後保持活動狀態。現在我一直在使用這個程序沒有任何問題。鬧鐘不響,如果程序強制停止

我被引導認爲以這種方式做事意味着保持我的報警程序一直運行並不是必要的,但是我驚恐地發現,如果我設置了一個警報,然後執行一個動作停止我的鬧鐘應用程序,然後鬧鐘不響。

我不知道這意味着我在編碼犯了一個錯誤,或者我被誤導,以爲它是能夠保持報警儘管應用不致停止。

可能在某種程度上操作系統檢測,我的鬧鐘應用具有報警運行,從而避免將其關閉?因此,只要用戶沒有手動力停止,那麼所有應該很好。

任何想法?

編輯:我只是測試 「鬧鐘復刻」。我設置了一個鬧鐘。然後做了一個阻止......警報從不響。

回答

2

這是預期的行爲,如果你的應用程序強制關閉。但是,如果用戶通過正常方式(如後退或主頁按鈕)離開應用程序,警報應該繼續按預期工作。

參見:Android alarm is cancelled after closing the application

+0

OK,但在低內存設備,操作系統將定期停止未當前引人注目的活動。我怎麼知道它不會阻止我的鬧鐘應用程序?我是否需要設置一個標誌,說:「除非絕望,否則請不要關閉我!」 – Mick

+0

簡而言之,您需要創建一個服務來處理響應AlarmManager觸發的Intent的鬧鐘播放。服務意味着處理更長時間的運行後臺操作,並且由於內存不足而不太可能被破壞。如果操作系統不得不銷燬你的服務,它將嘗試儘快重新創建它。您可以通過標誌告訴Android如何重新創建您的服務。看看IntentService,它非常易於使用:http://developer.android.com/reference/android/app/IntentService.html – elevine