2014-10-20 88 views
2

我使用警報管理器設置掛起的意圖,所以我的代碼獲取即使應用程序被關閉Android的報警管理器時,應用程序被關閉

manager.setRepeating(AlarmManager.RTC, System.currentTimeMillis() + interval, interval, pendingIntent); 
執行掛起的意圖

的問題是,它也可以當應用程序是打開,我需要將其配置爲僅在應用程序關閉時才起作用。有沒有辦法通過報警管理器或活動進行配置?

+0

哪個BroadcastReceiver是你使用清單還是手動代碼? – MOSO 2014-10-20 07:34:59

+1

當應用程序關閉時,鬧鐘管理器不起作用。你需要使用STICKY SERVICE爲此將在後臺運行... – Riad 2014-10-20 07:37:00

+0

爲此創建後臺服務,並檢查您的活動是否在前面比不執行您的代碼.. – 2014-10-20 07:49:13

回答

1

警報在您的應用程序範圍之外運行,因此如果不再需要它們,您需要手動取消它們。您可以使用cancel()方法AlarmManager來完成此操作。 不幸的是,我不認爲有一個簡單的方法來了解您的應用程序是否正在關閉。在途中可以使用ActivityLifecycleCallbacks。檢查this answer瞭解更多信息。正如你可以在那裏看到

只要檢查停止活動的數量是否等於已開始活動的數量 。如果它們相同,則應用程序正在 後臺接地

此時您可以設置鬧鐘。 相反

如果有更多的啓動活動,您的應用程序仍然是 可見。如果有比暫停活動更恢復,你的應用程序 不僅是可見的,但它也是在前臺

時,在這種情況下,你可以使用AlarmManagercancel()方法。 請注意,只要設備重新啓動,所有警報都會取消。

+0

以及說馬維。實際上,當機器重新啓動時,與應用程序對齊的後臺服務會停止,直到它再次啓動。 @Edgar:「爲了避免在應用程序打開時運行後臺活動」 - 檢查應用程序is_running在服務上,然後在任務運行時不執行任務。 – Riad 2014-10-20 09:14:03

相關問題