簡體   English   中英

使用即使設備處於打盹/睡眠模式也能工作的計時器更新前台服務通知

[英]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_SETTINGSIntent來申請權限。

例如:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM