以下是转eoe论坛keke的文章。
--------------------------------------
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消息。
-----------------------------分割线
分析到Framework源码级别了,记录一下。
分享到:
相关推荐
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> android:name="android.appwidget.provider" android:resource="@xml/widget_info" /> <activity android:name=".WidgetActivity"> ...
以健康服务为主题的andorid APP,毕业设计 好的,以下是一个以健康服务为主题的Android APP毕业设计项目方案,包括项目背景、功能模块、技术选型、实施计划等部分。 一、项目背景 随着生活水平的提高,人们越来越...
应用权限 分段 您也可以从Fragment请求权限。 Fragment也具有onRequestPermissionsResult,因此可以覆盖并在那里接收它 可能有些应用程序应使用... at android.app . Activity . dispatchRequestPermissionsResul
毕业设计:以健康服务为主题的andorid APP,风满楼的毕业设计
基于Andorid拉萨旅游景点APP设计与实现 本资源为基于Android拉萨旅游景点APP设计与实现的研究论文,旨在解决拉萨旅游景点信息不够的问题,通过设计和开发一个基于Android的拉萨旅游景点APP,实现游客对拉萨旅游景点...
2. **用户界面设计**:APP需要有直观易用的界面,涉及布局管理、颜色搭配、图标设计等。 3. **健康数据管理**:可能涉及到用户健康数据的收集、存储、分析,如步数、心率、睡眠质量等。 4. **API集成**:可能接入第...
总的来说,"Android APP与JS交互demo"是一个实用的例子,它帮助开发者理解如何在Android应用中实现原生与JS的双向通信,从而在混合式应用开发中充分利用两者的优势。通过学习这个示例,你可以更好地掌握如何在...
Andorid APK反逆向解决方案:梆梆加固原理探寻-CSDN
andorid分红世界APP
"andorid mqtt websocket app"的主题聚焦于使用MQTT(Message Queuing Telemetry Transport)协议和WebSocket技术来实现这一目标。这两种技术都是用于设备间高效、低延迟的数据交换方式,特别适合于物联网(IoT)场景...
andorid简单计算器java源码 Android开源项目及工具集分类汇总 第 0 部分: 2DEngines AndEngine 项目描述: Free Android 2D OpenGL Game Engine. 项目地址: http://www.andengine.org cocos2d-android 项目描述: ...
andorid简单计算器java源码 awesome-android Should i build the project with gitbook? Introduction android libs from github System requirements Android Notice If the lib is no longer being maintained,...
andorid简单计算器java源码 awesome-android Should i build the project with gitbook? Introduction android libs from github System requirements Android Notice If the lib is no longer being maintained,...
本项目源码“Widget炫酷特效 (宏基扇子型效果)”旨在实现一种独特且引人注目的界面设计,类似于蘑菇街和迷尚应用中的商品展示方式。这种效果通常被称为扇形旋转展示,它将多个小图标或图片以扇子展开的形式呈现,既...
Android Apps开发课程 课堂主题 Java基础课 Android Apps开发的需求软件 Android架构 Android活动启动 ... 项目:一个简单的计算器 使用线性布局,TextView,Button,ImageButton,ScroolView进行各种设计 项目:
1.一款新闻客户端app 2.使用Fragment + TabLayout + ViewPager 的MD UI设计风格,有 4个tab页面:科技,娱乐,体育,军事; 3.状态栏菜单有 主页, 设置, 我的 三个子菜单选项和完整功能 3.网络请求使用okhttp3 ...
andorid通讯录,基础练手app。 包括: 1.Android中的布局管理及资源文件的使用 2.Android中的ListView及ExpandableListView高级控件的使用 3.PopupWindow高级控件的使用技巧 4.Android中的UI设计及Menu\Dialog\...
基于Andorid设计APP控制51单片机多功能智能小车源码+功能说明.zip 基于Andorid设计APP控制51单片机多功能智能小车源码+功能说明.zip 基于Andorid设计APP控制51单片机多功能智能小车源码+功能说明.zip 基于Andorid...
这是一个基于Android平台的毕业设计项目,主题聚焦于健康服务领域,旨在开发一款能够提供健康管理、健康咨询、运动跟踪等功能的移动应用。以下是对这个APP可能包含的一些关键知识点的详细解释: 1. **Android开发...