AppWidget framework说明,了解widget在android系统中的位置和作用

android widget 也称为桌面插件,其是android系统应用开发层面的一部分,但是又有特殊用途,而且会成为整个android系统的亮点

首先我们来看一下android系统的软件层次



从中我们可以看到android系统增加了AppWidget 框架,用以支持widget类型应用的开发

AppWidget 框架主要由两个部件来组成,见下图



其中 AppWidgetService是框架的的核心类,是系统 service之一,它负责widgets的
管理工作。加载,删除,定时事件等都需要AppWidgetService的处理.开机自启动的.

AppWidgetManager 负责widget视图的实际更新以及相关管理

下面是框架工作的大致流程
1. 编写一个widget(先不考虑后台服务以及用户管理界面等)
    实际是写一个事件监听类即一个BroadcastReceiver子类,当然框架已经提供了一个辅助类AppWidgetProvider,实现的类只要实现其方法即可,其中必须实现的方法是onUpdate ,其实就是一个定时事件,widget监听此事件
    另外就是规划好视图(layout),将此widget打包安装
2. 当android系统启动时,AppWidgetService 就将负责检查所有的安装包,将检查
    AndroidManifest.xml(不要告诉我不知道,如果不知道可要看看基本开发知识了)
    文件中有<metadata android:name="android.appwidget.provider" android:resource="@xml/appwidget_info" />
    信息的程序包记录下来3. 从用户菜单将已经安装的widget添加到桌面,也就是将widget在桌面上显示出来,这个应该是由AppWidgetService和AppWidgetManager完成的,其中AppWidgetManager 将负责将视图发送到桌面显示出来,并将此widget记录到系统文件中
4. AppWidgetService将根据widget配置中的updatePeriodMillis属性来定时发送ACTION_APPWIDGET_UPDATE事件,此事件将激活widget的事件监听方法onUpdate,此方法将通过AppWidgetManager完成widget内容的更新和其他操作


另外还有AppWidgetHost 和AppWidgetHostView的概念大家需要清楚一下
AppWidgetHost 是实际控制widget的地方,大家注意,widget不是一个单独的用户界面程序,他必须寄生在某个程序(activity)中,这样如果程序要支持widget寄生就要实现AppWidgetHost,桌面程序(Launcher)就实现了这个接口,而AppWidgetHostView则根据widget提供的相关数据来生成真正的界面。


下一帖我详细给大家给出一个widget的例子,大家看看他是如何工作的

 

from:http://www.inandroid.cn/forum.php?mod=viewthread&tid=160

你可能感兴趣的:(AppWidget framework说明,了解widget在android系统中的位置和作用)