[英]How to run the circle method in sleep mode, even when the screen is not active?
[英]Updating a foreground service notification using a Timer that works even when the device is in Doze/Sleep mode
我有一個計時器(System.Timers),它被包裝在一個公開兩個事件的 object 中。 一個每秒觸發一次,一個每 7 分鍾觸發一次。 每秒觸發的事件正在更新帶有倒計時的前台服務通知。 每 7 分鍾觸發一次的事件正在更新一個 int 值,該值顯示在該前台通知的進度條中。
關鍵是我希望該 int 值達到 150。所以我正在倒計時 StartForeground() 時給出的值達到 150(每 7 分鍾增加 1)並顯示前台通知中剩余時間的進度(每秒更新一次)。
這一切都很好......直到我鎖定屏幕並且手機可能進入“打瞌睡”或睡眠模式。 然后這會停止我的計時器或停止服務,不確定。
問題:即使設備被鎖定/睡覺/打瞌睡,我怎樣才能讓它繼續工作。 我使用的是 xamarin-android 而不是 forms。
嘗試將應用程序添加到白名單。
您可以使用PowerManager.IsIgnoringBatteryOptimizations
檢查此 App 是否在系統的白名單中。
如果沒有,您可以通過在Androidmanifest.xml
中添加REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
權限並發送ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS
的Intent
來申請權限。
例如:
PowerManager powerManager = (PowerManager)GetSystemService(Context.PowerService);
if (!powerManager.IsIgnoringBatteryOptimizations(PackageName))
{
Intent intent = new Intent(Settings.ActionIgnoreBatteryOptimizationSettings);
StartActivity(intent);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.