基本上我被卡住了,因爲電池中的「改進」在Android 6.0+中添加了。我的應用程序從第三方服務器的Web服務獲取數據:我的應用程序從11+在Android中每x分鐘運行IntentService的正確方式包括打盹
方案
這裏是我的方案支持API。由於它不是我的服務器,因此我無法控制何時添加或刪除數據。數據的可用性各不相同。我希望能夠觸發一個IntentService來獲取數據,例如在接下來的6個小時內每30/60分鐘一次。通過這種方式,我可以在我的應用程序中的數據覆蓋數據從服務器不可用時的情況。 當然,即使我的應用程序已關閉,也需要執行此操作。
你可能會說這對電池不友好,但它是高級用戶的選擇。
我做了什麼至今
我一直在努力了很多與設置。雖然設置重複鬧鐘似乎是最簡單和最方便的方式,但它只有在android 5.0之前才能可靠地工作。
從引入Doze
開始,根據文檔,報警被推遲到maintenance window
,並且由於這些窗口在1-2-4等小時,它不適合我的需要。
我放棄了使用集repeating
,並試圖使用一次Alarm
它在IntentService
執行中重新安排。從測試setExact
似乎沒有運行良好,但後來嘗試setExactAndAllowWhileIdle
這確實在正確的時刻開火,但如果在Doze
模式下,它沒有網絡連接訪問,使其無用。
即使是這樣,我不知道當setRepeating
或setExact
報警被延遲,但之前在下一個維護窗口中的設備被喚醒會發生什麼......
基本上現在我卡住,用未機制工作,我不知道還有什麼可以選擇的應用程序支持的Android版本和需求。 LE:實際上,我並不知道在Android上設置背景作業的好方法,即使不包括Doze。我的意思是,我們確實有JobScheduler
這似乎是一件很好的事情......但是,嘿,它只在Android 21上可用,而不是向後支持......我的意思是,真的,有一個簡單的事情要做,我已經等待迄今爲止的幾天。
謝謝,'setAlarmClock'似乎是唯一真正的選擇,但它確實是一個超出範圍。 – Alin