android在1.5版本新增加了时下流行的widget功能。坛子里也有不少童鞋对这个很感兴趣,也在开发相关
的widget. 那么今天就来讲讲android这套widget framework是如何工作的,应应景哈~~~~

AppWidgetService.java 这是widget framework的核心类,是系统service之一,它承担着所有widget的
管理工作。Widget安装,删除,更新等等都需要经过AppWidgetService.它是开机就启动的.

在开机过程中,java层进程System Server启动后(这个进程管理着所有的系统service, 例如
activity manager service, windows manager service, power manager service等),会创建
AppWdigetService的实例,并调用它的SystemReady()方法,在这个方法里,它做了三件事:
1)遍历所有的安装包,找到符合条件ACTION=ACTION_APPWIDGET_UPDATE和<meta-data android:name="android.appwidget.provider"/>的intent receiver,解析相关信息,保存到本地数据成员中。
2)读取本地文件数据:/data/system/appwidgets.xml,所有已安装到桌面的widget的信息都保存在这个文件里。读出来,也保存到本地数据成员里。
3)注册了三个消息:ACTION_BOOT_COMPLETED(系统启动到桌面就会发送此消息),ACTION_PACKAGE_ADDED(有新APK包安装到系统),ACTION_PACKAGE_REMOVED(有APK包被删除)。当系统启动到桌面后,AppWidgetService接收到了ACTION_BOOT_COMPLETED消息,它会去检查本地数据成员,如果有已经安装到桌面的widget,它会上发ACTION_APPWIDGET_ENABLED和ACTION_APPWIDGET_UPDATE消息。如果有widget设置了updatePeriodMillis的属性,它就会开始计时(这个是通过AlarmManager来实现的),到时间时,就会再次上发ACTION_APPWIDGET_UPDATE消息。

更多相关文章

  1. android的looper,handler消息小结
  2. 为什么Looper.loop()死循环不会导致ANR
  3. 条件数据库Android:sqllite使用
  4. Android(安卓)Clean 架构浅析
  5. Android传输数据时加密详解
  6. Android(安卓)Acrchitecture Components( 架构组件)+热门框架(Re
  7. Android刷机利器 - 固件管理器桌面版 更新到 0.18 beta
  8. android:服务器与客户端的双向开发
  9. adb connect远程Android报错:refused,拒绝连接(10061)

随机推荐

  1. android 对电话的处理
  2. Andorid利用sserver/runtime实现java执行
  3. 高德地图Android版SDK的应用(定位,添加自
  4. 42.Android LocationManager
  5. Android TextView 个别文字字体颜色格式
  6. Android之使用MediaMetadataRetriever类
  7. Android SDK Manager Extras中没有 Intel
  8. Android SQLite 数据库、表的增、删、改
  9. 关于Android 游戏开发中 OnTouchEvent()
  10. android log笔记