桌面小部件更新时间优化

大家都知道进程保活一直都是不少开发者头疼的事情,厂商的各种限定以及sdk的更新,导致应用进程无法长期保活。以此为背景,项目有个桌面部件的更新问题就需要解决。
安卓桌面有种常用的桌面小部件,比如网易云音乐的音乐播放器。就是用到AppWidgetProvider组件去实现。其实AppWidgetProvider的基类就是BroadcastReceiver,说到组件,基本都知道他有了生命周期,AppWidgetProvider也有,
在手机系统桌面上两指缩放,会有菜单栏设置,里面就有添加桌面小组件的操作。所以AppWidgetProvider生命周期也从添加组件开始。
1、在桌面上添加小部件,让小部件可用会调用:onEnabled
2、作为通知会调用onReceive
3、小部件可用后会调用onUpdate,表明小部件状态由不可用变为可用发生了变化
4、作为通知又会调用onReceive
5、当拽小部件到垃圾篓删除小部件时会调用onDeleted
6、作为通知又会调用onReceive
7、删除小部件后,小部件变为了不可用会调用onDisabled
8、作为通知又会调用onReceive

AppWidgetProvider的使用,可以参考下面的链接https://www.jianshu.com/p/fbcf08650bc0,具体使用里面会讲到。

由于系统原因和各种机型会导致桌面部件的更新不及时,所以决定使用前台服务来大概率保证部件的更新问题。不过这就需要用户一直保证前台服务通知栏的显示。
就大概讲个思路:在onEnabled方法中,启动前台服务,onDisabled中也成对停止服务。前台服务中onStartCommand(),拿取系统时间更新,去发送广播通知给AppWidgetProvider,触发AppWidgetProvider的onUpdate方法,保证更新。

你可能感兴趣的:(桌面小部件更新时间优化)