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 app widget 使用listview 源码
android中appwidget介绍,以及其中原理
android appwidget使用说明及示例程序
Android App Widget 开发,demo实现了一个简单的音乐播放器,详见http://blog.csdn.net/huaxun66/article/details/77880376
图中我用黄色箭头指示的即为AppWidget,一些用户使用比较频繁的程序,可以做成AppWidget,这样能方便地使用。典型的程序有时钟、天气、音乐播放器等。AppWidget 是Android 系统应用开发层面的一部分,有着特殊用途,...
android的appwidget全面解析及启动运行过程。
App Widget 的概念 一个简单的App Widget例子 PendingIntent的使用 RemoteViews的使用 接收来自App Widget的广播 更新App Widget的控件状态
使用appWidget启动一个Activity
NULL 博文链接:https://hanllove001.iteye.com/blog/1185506
Android -- AppWidget源码
在src下的layout文件夹下新建一个xml文件夹,然后在xml文件夹新建一个布局文件,该布局文件就是第一步中需要加载的appwidget初始化时所需的布局文件,因此该xml文件的根标签为与layout有关,比如说LinearLayout类型...
android appwidget 经典完整代码 非常经典 非常好用的完整代码。
NULL 博文链接:https://hanllove001.iteye.com/blog/1185128
Android应用源码之Android小部件AppWidget.zip
NULL 博文链接:https://hanllove001.iteye.com/blog/1185166
此demo实现 android 桌面控件appwidget
Android AppWidget如何支持复杂的View
1,widget 基本展示 2,widget点击跳转到activity 3,发送广播事件,更新widget界面
NULL 博文链接:https://mypyg.iteye.com/blog/930072
Android App 启动时显示正在加载图片,如微信,人人,qq,天天动听等