代码之家  ›  专栏  ›  技术社区  ›  August Lilleaas

频繁更新小部件(比UpdatePeriodMillis允许的频率更高)

  •  13
  • August Lilleaas  · 技术社区  · 15 年前

    我想要一个小部件显示一个用户发起的巴士发车跟踪的倒计时。我想每分钟更新一次这个小部件,从用户启动跟踪到总线离开(即时间用完)。

    这个小部件需要比什么更新得更频繁 updatePeriodMillis 允许,即每30秒。我估计一分钟一次。

    作为一个刚接触Android编程的人,我可以想出一些方法来做到这一点,但我最终可能会以消耗太多电池等方式完成这一点,因此我正在寻找经验更丰富的Android开发人员的一些见解。

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

    1 回复  |  直到 15 年前
        1
  •  23
  •   Fedor    15 年前

    我会注册一个警报,每1分钟启动一次我的服务,服务会更新小部件用户界面。

    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?如果设备休眠至电池寿命,则不会影响它的实时性。