java - AlarmManager 不可靠,是否有改进或替代方案?

标签 java time widget alarmmanager

我需要使用设定值(例如每 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/

相关文章:

javascript - 仪表板跨域 AJAX 与 jquery

c - 删除 GTK+ 容器子项,重新填充它,然后刷新

java - 重写 java.io.FileOutputStream 方法

java - Collections.sort 无法按预期使用 ListView 和适配器

ruby - 如何在 ruby 中显示一小时后或一小时前

regex - 处理由天,小时,分钟和秒定义的持续时间,例如R中的 “1d 3h 2m 28s”

c - 为什么 GCC 声明 clock_gettime() 隐式声明,但预处理器对相关宏非常满意?

javascript - 获取在 javascript 文件中传递的查询字符串参数

java - 将项目添加到 ArrayList 时遇到问题

java - 设置十六进制格式