我使用警報管理器設置掛起的意圖,所以我的代碼獲取即使應用程序被關閉Android的報警管理器時,應用程序被關閉
manager.setRepeating(AlarmManager.RTC, System.currentTimeMillis() + interval, interval, pendingIntent);
執行掛起的意圖
的問題是,它也可以當應用程序是打開,我需要將其配置爲僅在應用程序關閉時才起作用。有沒有辦法通過報警管理器或活動進行配置?
我使用警報管理器設置掛起的意圖,所以我的代碼獲取即使應用程序被關閉Android的報警管理器時,應用程序被關閉
manager.setRepeating(AlarmManager.RTC, System.currentTimeMillis() + interval, interval, pendingIntent);
執行掛起的意圖
的問題是,它也可以當應用程序是打開,我需要將其配置爲僅在應用程序關閉時才起作用。有沒有辦法通過報警管理器或活動進行配置?
警報在您的應用程序範圍之外運行,因此如果不再需要它們,您需要手動取消它們。您可以使用cancel()方法AlarmManager
來完成此操作。 不幸的是,我不認爲有一個簡單的方法來了解您的應用程序是否正在關閉。在途中可以使用ActivityLifecycleCallbacks。檢查this answer瞭解更多信息。正如你可以在那裏看到
只要檢查停止活動的數量是否等於已開始活動的數量 。如果它們相同,則應用程序正在 後臺接地
此時您可以設置鬧鐘。 相反
如果有更多的啓動活動,您的應用程序仍然是 可見。如果有比暫停活動更恢復,你的應用程序 不僅是可見的,但它也是在前臺
時,在這種情況下,你可以使用AlarmManager
的cancel()
方法。 請注意,只要設備重新啓動,所有警報都會取消。
以及說馬維。實際上,當機器重新啓動時,與應用程序對齊的後臺服務會停止,直到它再次啓動。 @Edgar:「爲了避免在應用程序打開時運行後臺活動」 - 檢查應用程序is_running在服務上,然後在任務運行時不執行任務。 – Riad 2014-10-20 09:14:03
哪個BroadcastReceiver是你使用清單還是手動代碼? – MOSO 2014-10-20 07:34:59
當應用程序關閉時,鬧鐘管理器不起作用。你需要使用STICKY SERVICE爲此將在後臺運行... – Riad 2014-10-20 07:37:00
爲此創建後臺服務,並檢查您的活動是否在前面比不執行您的代碼.. – 2014-10-20 07:49:13