android - 频繁更新小部件(比 updatePeriodMillis 允许的更频繁)

标签 android android-widget

我想要一个显示倒计时的小部件,以便用户启动对公交车出发的跟踪。我想每分钟左右更新一次小部件,从用户开始跟踪到公交车离开(即时间用完)。

此小部件需要比 updatePeriodMillis 允许的更频繁地更新,即每 30 分钟一次。我估计大约每分钟一次。

作为 Android 编程的新手,我可以想出几种方法来做到这一点,但我最终可能会以一种消耗太多电池等方式完成它,所以我正在寻找更有经验的人的一些见解Android 开发者。

如何启动计时器?如何从我的应用程序运行时访问小部件实例?等等。

最佳答案

我会注册一个闹钟以每 1 分钟启动一次我的服务,并且该服务会更新小部件 UI

final Intent intent = new Intent(context, UpdateService.class);
final PendingIntent pending = PendingIntent.getService(context, 0, intent, 0);
final AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarm.cancel(pending);
long interval = 1000*60;
alarm.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(),interval, pending);

如果设备处于 sleep 状态,AlarmManager.ELAPSED_REALTIME 将不会唤醒设备,电池生命周期不应受到影响。

关于android - 频繁更新小部件(比 updatePeriodMillis 允许的更频繁),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3310264/

相关文章:

android - 如何远程调试Crosswalk webview?

Android 主屏幕小部件(图标、标签 - 样式)

android - 具有不同尺寸图像的 ImageView 选择器

android - 如何删除所有 Activity 的地理围栏?

android - 使用 Intent 打开相机

android - 如何在 Android Studio 中使用弃用的 NDK

android - 为 webview 预加载数据

android - 为什么我导入的 PNG 质量这么低

java - 需要帮助来理解此复选框代码在 Android 中的工作原理

android - 将 Android Widget 限制为每台设备一个实例