Launcher AppWidget小部件更新过程

系统开机后,AppWidgetService在user解锁后遍历appWidget.xml,为每个AppWidgetProvider发送onEnable和onUpdate广播。AppWidgetProvider接收到广播后,通过AppWidgetManager向Launcher更新RemoteViews。在Launcher端,updateAppWidget使用异步方式执行,若高频率短间隔调用可能导致更新丢失,从而出现显示不同步问题。此流程基于AOSP O及之后版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 系统开机后向AppWidgetProvider发送OnEnable, onUpdate的广播流程说明
1)AppWidgetService是运行在system_server进程, 当收到user解锁回调后,会遍历该user下的appWidget.xml文件,获取到已经在Launcher上布局的AppWidgetProvider及其下所有的Widget, Widget信息里包含AppWidgetId值。
2)然后给每个Provider发送一条onEnable广播,及onUpdate广播带有该Provider下所有AppWidgetIds信息。 最后调用到Provider里的onEnable()及onUpate()中。
3)当AppWidgetProvider收到onEnable或onUpdate时,通过AppWidgetManager接口向Launcher更新RemoteViews,开机后此时Launcher才第一次获得到要更新的对应AppWidgetHostView的消息,进行更新。
关键代码:
在这里插入图片描述
2. AppWidgetProvider向Launcher更新RemoteViews的执行流程
特别说明在调用到Launcher端AppWidgetHostView类中时, Launcher端更新过程:
1) 在updateAppWidget中调用applyRemoteViews, 并且第二个异步参数传入true, Android原生framework代码逻辑。
在这里插入图片描述
2)2)在applyRemoteViews中,运行在Launc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值