频繁更新小部件(比 updatePeriodMillis 允许的更频繁)
Posted
技术标签:
【中文标题】频繁更新小部件(比 updatePeriodMillis 允许的更频繁)【英文标题】:Frequently updating widgets (more frequently than what updatePeriodMillis allows) 【发布时间】:2011-03-19 14:59:14 【问题描述】:我想要一个小部件,显示用户发起的公交车发车跟踪倒计时。我想每分钟左右更新一次小部件,从用户启动跟踪到公共汽车出发(即时间用完)。
此小部件需要比updatePeriodMillis
允许的更新频率更高,即每 30 分钟一次。我估计大约每分钟一次。
作为 android 编程的新手,我可以想出几种方法来做到这一点,但我可能最终会以一种消耗太多电池等的方式来做,所以我正在寻找更有经验的人的一些见解Android 开发者。
如何启动计时器?如何从我的应用程序运行时访问小部件实例?以此类推。
【问题讨论】:
仅供参考,updatePeriodMillis
更新频率是 30 分钟,而不是秒。
【参考方案1】:
我会每 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 不会唤醒设备,如果它正在休眠,电池寿命不会受到影响。
【讨论】:
“我要注册一个警报” - 代码在哪里?你在哪里注册AlarmManager
?
@jjnguy AlarmManager 不需要注册,因为它是从context.getSystemService
收到的。
这根本没有帮助!所有这些代码都去哪里了?对于使用小部件的初学者来说,没有使用它来制作...
这个应该放在类扩展到AppWidgetProvider
的地方。在onUpdate
方法上?
Virthuss / @natsumiyu,它进入了您知道需要开始更新的用户交互。一旦不再需要快速刷新,不要忘记取消重复警报。不要忘记,您还需要实现一个服务来向自己发送更新意图,这里没有列出。以上是关于频繁更新小部件(比 updatePeriodMillis 允许的更频繁)的主要内容,如果未能解决你的问题,请参考以下文章