Android中AppWidget加载流程(二)
来源:互联网 发布:倩碧眼部精华滚珠知乎 编辑:程序博客网 时间:2024/04/30 00:11
1. 用户长按Launcher弹出添快捷组件的Dialog,选择添加AppWidget,这时会打开一个Activity(AppWidgetPickActivity)显示系统中全部
AppWidget,单击某一个AppWidget后会做以下操作:
(1) 通过AppWidgetService获取一个最新的appWidgetId值。
(2) 根据获取的appWidgetId值,向单击的AppWidget组件发出APPWIDGET_ENABLED和APPWIDGET_UPDATE更新广播。并向
/data/system/appwidgets.xml中添加此AppWidget的基本信息。
2. 启动AppWidgetPickActivity(第1步中提到)时使用的是startActivityForResult()方法,所以在向所单击的AppWidget组件发出
APPWIDGET_ENABLED和APPWIDGET_UPDATE更新广播后会执行onActivityResult()方法,做以下准备工作:
(1) 将需要被添加到Launcher的AppWidget基本信息保存到数据库中。
(2) 根据查找到的appWidgetId值(整型值)创建LauncherAppWidgetHostView布局对象。
(3) 根据查找到的appWidgetId值(整型值)从AppWidgetService中获取RemoteViews对象(因为是第一次启动所以RemoteViews对象
为空)。
(4) 将获取到的RemoteViews对象的布局解析并设置到第(2)步中创建的LauncherAppWidgetHostView布局对象中。
(5) 将LauncherAppWidgetHostView布局对象添加到Launcher的WorkSpace中(因为RemoteViews对象为空,所以只在Launcher的
WorkSpace中占了一个位置)。
3. 在第1步中已经向需要添加到Launcher中的AppWidget发出了更新消息(注意:第一步和第二步是异步执行的),继续做以下事情:
(1) 每个AppWidget接收到广播后都会调用onEnabled()方法和onUpdate()方法,在onEnabled()方法中进行一些初始化操作,在
onUpdate()方法中创建RemoteViews布局对象并通过AppWidgetManager的updateAppWidget(int appWidgetId, RemoteViews
remoteViews)方法通知AppWidgetService对象用RemoteViews对象更新appWidgetId所对应的AppWidget.
(2) AppWidgetService接收到了appWidgetId和RemoteViews后,通过appWidgetId查找已经被添加到Launcher的
LauncherAppWidgetHostView布局对象,并将RemoteViews中的布局更新到LauncherAppWidgetHostView布局对象中。
AppWidget显示在Launcher中。
- Android中AppWidget加载流程(二)
- Android中AppWidget加载流程(二)
- Android中AppWidget加载流程(一)
- Android中AppWidget加载流程(一)
- Android中AppWidget加载流程
- 【Android AppWidget开发流程】
- Android:AppWidget开发流程
- Android开发之AppWidget应用(二)
- Android开发之AppWidget应用(二)
- Android中AppWidget详解
- android中Appwidget的使用
- Android源码解析(二十一)-->PopupWindow加载绘制流程
- Android源码解析(二十二)-->Toast加载绘制流程
- Android中AppWidget的学习整理(附demo)
- Android中实现Launcher功能之二 ----- 添加窗口小部件以及AppWidget的创建详解
- Android中实现Launcher功能之二 ----- 添加窗口小部件以及AppWidget的创建详解
- Android中实现Launcher功能之二 ----- 添加窗口小部件以及AppWidget的创建详解
- Android中AppWidget的创建和使用
- POJ1012 Joseph 约瑟夫问题+枚举
- .//和..//
- berkeley db 中secondaryDatabase的用法 and 构建索引
- AVR 学习笔记------AVR的I/O端口及其使用
- 读写信号量(2.6.23内核,i386)
- Android中AppWidget加载流程(二)
- Android的国际化与本地化
- GET与POST的区别
- test mail
- MVC与表现层,业务层,数据持久层
- ERP的风险与管理分析
- 给JSON数据字符串中的键名加上双引号
- CPU 电源状态( C-States )
- 图形加速卡技术(大众扫盲篇)