Android中AppWidget加载流程(一)
2011-09-20 17:34
429 查看
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中。
(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中。
相关文章推荐
- Android中AppWidget加载流程(一)
- Android中AppWidget加载流程
- Android中AppWidget加载流程(二)
- Android中AppWidget加载流程(二)
- 【Android AppWidget开发流程】
- Android:AppWidget开发流程
- Android Launcher源码研究(二) 加载app流程1
- Android Launcher源码研究(三) 加载app流程2
- 【Android AppWidget开发流程】
- Android:AppWidget之桌面小电筒
- Android实战简易教程-第六十四枪(Android APP 引导页实现-第一次应用进入时加载)
- 从setContentView方法分析Android加载布局流程
- 剖析Picasso加载压缩本地图片流程(解决Android 5.0部分机型无法加载本地图片的问题)
- Android Launcher对于AppWidget处理的分析:AppWidgetHost角色
- Android 之窗口小部件详解--App Widget
- android 如何动态的加载类----app插件技术
- Android-接受来自Appwidget的广播、更新Appwidget控件的状态
- Android之AppWidget的按钮事件开启Activity
- Android AppWidget系统框架
- Android开发之App Widget(一)