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
Launcher AppWidget小部件更新过程
最新推荐文章于 2025-07-15 13:07:38 发布
系统开机后,AppWidgetService在user解锁后遍历appWidget.xml,为每个AppWidgetProvider发送onEnable和onUpdate广播。AppWidgetProvider接收到广播后,通过AppWidgetManager向Launcher更新RemoteViews。在Launcher端,updateAppWidget使用异步方式执行,若高频率短间隔调用可能导致更新丢失,从而出现显示不同步问题。此流程基于AOSP O及之后版本。

最低0.47元/天 解锁文章
1061

被折叠的 条评论
为什么被折叠?



