当前位置:  开发笔记 > Android > 正文

使用API​​ 19+以较短的间隔更新Widget

如何解决《使用API​​19+以较短的间隔更新Widget》经验,为你挑选了0个好方法。

Pre API 19,比updatePeriodMillis最小时间30分钟更新Widget 的首选方法是在设置AlarmManager时使用指定的间隔后使用a AlarmManager和a BroadcastReceiver接收Intent.

目前,使用下面的代码,Widget会更新,但是从Android 5.1开始,使用重复间隔小于60000ms的.setRepeating()会自动将其间隔设置为至少60000ms.

在Widgets onEnabled()中设置闹钟:

AlarmManager am= (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
//After after 3 seconds
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+ 3000, 1000 , pi);

然后在AlarmManagerBroadcastReceiver的onReceive()中:

PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "TAG");
//Acquire the lock
wl.acquire();

/* 
 * ......
 * Update Widgets RemoteViews
 */

wl.release();

在setRepeating()的文档中,它说:

注意:从API 19开始,所有重复警报都不准确.如果您的应用程序需要精确的交付时间,那么它必须使用一次性精确警报,每次重新安排如上所述.targetSdkVersion早于API 19的旧应用程序将继续将所有警报(包括重复警报)视为精确警报.

它现在还说:

安排重复警报.注意:对于计时操作(刻度,超时等),使用起来更容易,效率更高Handler

那么您将如何使用处理程序更新Widgets Remoteviews?当设备进入睡眠状态以节省电池时,您会如何停止它?

有没有其他建议的方法来更新Widget?

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有