我正在编写一个 Android 小部件,希望每 1-5 分钟更新一次以监视来自 Web 服务的数据,但我发现 android:updatePeriodMillis
不能小于 30 分钟。
那么,如何在小部件中实现这个结果呢?
我正在编写一个 Android 小部件,希望每 1-5 分钟更新一次以监视来自 Web 服务的数据,但我发现 android:updatePeriodMillis
不能小于 30 分钟。
那么,如何在小部件中实现这个结果呢?
注册一个AlarmManager服务,每隔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);
然而,向应用程序小部件推送更新是一项昂贵的操作。每分钟更新一次将强制你的“更新应用程序小部件”代码常驻内存,保持运行状态,并且这也会显著消耗电池。
Handler
来sendMessageDelayed(..)
发送一个消息或者postDelayed(..)
一个Runner
。new Handler().postDelayed( new Runnable() {
public void run() { ... },
60000 /* one minute */
);
onUpdate
方法里吗? - natsumiyusetRepeating()
不兼容。我尝试了一切,甚至每次闹钟响起时都使用setExactAndAllowWhileIdle()
,但它要么不响起,要么在我想要的1分钟之后太多次响起。 - Nikiforos