1. Android系统启动,SystemServer创建AppWidgetService,并调用systemReady()方法,在systemReady()方法中做以下三项准备工作:
(1)通过PackageManager从Android系统中查找所有已经被安装的AppWidget(包含"android.appwidget.action.APPWIDGET_UPDATE“ 的Action和meta-data标签),解析AppWidget的配置信息,封闭成对象,保存到List集合。
(2)从/data/system/appwidgets.xml文件读取已经被添加到Launcher的AppWidget信息,封闭成对象,保存到List集合中。
(3)注册四个广播接收器:第一. Android系统启动完成,第二. Android配置信息改变,第三. 添加删除应用,第四. sdcard的安装与缷载。
2. Android系统启动Launcher应用程序,会做以下准备工作:
(1)从Launcher应用的数据库查找已经被添加到Launcher的AppWidget信息。
(2)根据查找到的appWidgetId值(整型值)创建LauncherAppWidgetHostView布局对象。
(3)根据查找到的appWidgetId值(整型值)从AppWidgetService中获取RemoteViews对象(因为是第一次启动所以RemoteViews对象为空)。
(4)将获取到的RemoteViews对象的布局解析并设置到第(2)步中创建的LauncherAppWidgetHostView布局对象中。
(5)将LauncherAppWidgetHostView布局对象添加到Launcher的WorkSpace中(因为RemoteViews对象为空,所以只在Launcher的 WorkSpace中占了一个位置)。
3. Android系统启动完成,发出BOOT_COMPLETED广播,AppWidgetService接收到广播后,会做以下事情:
(1)获取已经添加到Launcher的AppWidget列表(在第1步的第(2)小步中提到),依次向这个Widget发出APPWIDGET_ENABLED和 APPWIDGET_UPDATE更新广播,根据配置的更新间隔定时发出更新广播。
(2)每个AppWidget接收到广播后都会调用onEnabled()方法和onUpdate()方法,在onEnabled()方法中进行一些初始化操作,在onUpdate()方法中创建RemoteViews布局对象并通过AppWidgetManager的updateAppWidget(int appWidgetId, RemoteViews remoteViews)方法通知AppWidgetService对象用RemoteViews对象更新appWidgetId所对应的AppWidget.
(3)AppWidgetService接收到了appWidgetId和RemoteViews后,通过appWidgetId查找已经被添加到Launcher的LauncherAppWidgetHostView布局对象,并RemoteViews中的布局更新到LauncherAppWidgetHostView布局对象中。AppWidget显示在Launcher中。
分享到:
相关推荐
使用appWidget启动一个Activity
App Widget 的概念 一个简单的App Widget例子 PendingIntent的使用 RemoteViews的使用 接收来自App Widget的广播 更新App Widget的控件状态
这是一个在应用中创建属于应用的AppWidget的小demo,功能很简单,希望帮助了解AppWidget的创建流程。
在src下的layout文件夹下新建一个xml文件夹,然后在xml文件夹新建一个布局文件,该布局文件就是第一步中需要加载的appwidget初始化时所需的布局文件,因此该xml文件的根标签为与layout有关,比如说LinearLayout类型...
AppWidget的学习Demo,创建了一个简单的桌面widget小窗口,并实现与之互动的功能。
android app widget 使用listview 源码
Android -- AppWidget源码
android的appwidget全面解析及启动运行过程。
Android App Widget 开发,demo实现了一个简单的音乐播放器,详见http://blog.csdn.net/huaxun66/article/details/77880376
app资源预加载流程图
AppWidget 是Android 系统应用开发层面的一部分,有着特殊用途,使用得当的化,的确会为app 增色不少,它的工作原理是把一个进程的控件嵌入到别外一个进程的窗口里的一种方法。长按桌面空白处,会出现一个 AppWidget...
NULL 博文链接:https://hanllove001.iteye.com/blog/1185128
android appwidget使用说明及示例程序
android appWidget每日一句APK文件
Android应用源码之Android小部件AppWidget.zip
android appWidget每日一句源码
本例介绍了如何创建一个appWidget
appwidget显示时间,每秒刷新一次
Android appWidget每日一句修正1 增加了选择语言的点击范围 将选择语言换成Activity透明背景选择
在appWidget启动Service,与Service通讯