经常更新小部件(比updatePeriodMillis允许的更频繁)

时间:2010-07-22 14:58:02

标签: android android-widget

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

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

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

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

1 个答案:

答案 0 :(得分:23)

我会注册一个警报,每隔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);

AlarmManager.ELAPSED_REALTIME不会在设备睡眠不足的情况下唤醒设备。