我需要使用设定值(例如每 1-5 秒)频繁更新一个小部件。 我发现为此应该使用 AlarmManager。 我测试了 AlarmManager 的 setExact() 方法,发现它的最短时间正好是 5 秒。 我还注意到间隔可能会有很大的延迟。 我以 5 秒的设定间隔进行了测试。 我的测试显示 setExact() 方法有以下值:5s、5s、40s、41s、19s、5s、5s,... 使用 setRepeating() 方法显示出更糟糕的值:17s、39s、7s、75s、60s,...显然,AlarmManager 在三星设备上使用时也根本不会触发,这是我计划在其上使用小部件的设备。 除了使用 AlarmManager 之外还有其他选择吗? AlarmManager 能否以某种方式变得更加可靠? 我需要更新率保持恒定,没有这样的延迟。
final AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent notifyIntent = new Intent(this, AlarmReceiver.class);
final PendingIntent notifyPendingIntent = PendingIntent.getBroadcast
(this, NOTIFICATION_ID, notifyIntent, PendingIntent.FLAG_UPDATE_CURRENT);
long triggerTime = SystemClock.elapsedRealtime()
+ 3000;
long repeatInterval = 1000;
alarmManager.setExact(AlarmManager.RTC_WAKEUP,
triggerTime, notifyPendingIntent);
最佳答案
除了 AlarmManager 之外,我还检查了 JobScheduler 和 Worker,但两者似乎都基于 15 分钟(!)的最小间隔。 然而,使用一个简单的线程似乎是有效的。我只需要找出如何让它可靠地运行然后...... 如果您知道其他解决方案,请告诉我!
关于java - AlarmManager 不可靠,是否有改进或替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57610203/