您好 我正在写一个Android Widget;我想每隔1-5分钟更新一次以监控来自webservice的数据,但我发现android:updatePeriodMillis不能少于30分钟....我怎样才能用Widget获得这个结果?
谢谢和问候 角
答案 0 :(得分:16)
每1分钟呼叫注册一次AlarmManager服务。
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);
但是,将更新推送到app小部件是一项昂贵的操作。每1分钟更新会强制你的“更新应用程序小部件”代码驻留在内存中,这些代码一直在运行,这也会非常耗费电池。
答案 1 :(得分:1)
使用Handler
至sendMessageDelayed(..)
条消息或postDelayed(..)
Runner
。
new Handler().postDelayed( new Runnable() {
public void run() { ... },
60000 /* one minute */
);