Widget创建过程(将RemoteViews发给WidgetHost)

创建Widget过程


(1)分配id(用HostId请求分配WidgetId:WidgetHost.allocateAppWidgetId:由WidgetService分配一个WidgetID)

      WidgetService端:Host列表+WidgetId列表

(2)绑定id(将WidgetId绑定到Provider)

      WidgetManager.bindAppWidgetId:将WidgetID绑定到WidgetProvider

      将WidgetID放入相应WidgetProvider的ID列表

      发送Enable(第一次)+Update广播  (Service发送广播请求RemoteViews)

            WidgetService.sendEnableIntent 发送Enable广播

            WidgetService.sendUpdateIntent 发送Update广播(WidgetIDs)

(3)Provider发送RemoteViews(接受广播,创建RemoteViews,再发给Service)

      WidgetProvider接受广播,回调onEnable,onUpdate

            创建RemoteViews(每一个WidgetID创建一个)

            WidgetManager.updateAppWidget 将RemoteViews发给WidgetService

(4)Service通知Host

      WidgetService通过IBinder回调WidgetHost的Callbacks(updateAppWidget,providerChanged,viewDataChanged)

(5)添加到桌面(Host创建View,刷新)

      WidgetHost主线程调用updateAppWidgetView

      WidgetHost根据WidgetID取到WidgetHostView,再根据RemoteViews创建View添加到WidgetHostView


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值