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

Aug*_*aas 13 android android-widget

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

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

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

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

Fed*_*dor 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);
Run Code Online (Sandbox Code Playgroud)

AlarmManager.ELAPSED_REALTIME不会影响设备,因为它不会影响电池寿命.

  • "我会注册一个警报" - 那个代码在哪里?你在哪里注册`AlarmManager`? (5认同)
  • 这根本没有用!所有这些代码都去了哪里?对于使用小部件的初学者,没有使用它来制作... (3认同)