`
quanminchaoren
  • 浏览: 924486 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Android中AppWidget加载流程(一)

阅读更多

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 楼 xiandaoyan 2011-12-01  
取经了,谢谢!

相关推荐

    基于Android平台的App Widget设计与实现.pdf

    【App Widget加载流程】 1. **添加Widget**: 用户从应用程序抽屉选择Widget,并将其拖放到主屏幕上。此时,Android系统调用App Widget Provider的`onAddWidget()`方法。 2. **初始化布局**: 在`onAddWidget()`方法...

    Android手机APP编程开发

    Android 手机 APP 编程开发的流程包括以下几个步骤: 1. 安装和配置 Android 开发环境,包括安装 Android Studio、设置 JDK 和 SDK 等。 2. 创建一个新的 Android 项目,包括选择项目模板、设置项目结构等。 3. ...

    Widget开发Demo

    - `android:initialLayout="@layout/example_appwidget"`:指定了 Widget 加载时使用的布局文件。 - `android:minHeight="60dp"` 和 `android:minWidth="180dp"`:定义了 Widget 的最小尺寸。 - `android:...

    Android知识总结.doc

    在Android开发中,AppWidget与Android.Widget扮演着不同但至关重要的角色。AppWidget是Android平台上的桌面小部件,允许用户在主屏幕上放置动态内容,如天气预报、新闻摘要或应用程序快捷方式。AppWidget的设计初衷...

    简单掌握Android Widget桌面小部件的创建步骤

    在`AndroidManifest.xml`中,你需要添加一个`<receiver>`标签来注册你的WidgetProvider,同时在`<intent-filter>`中声明`ACTION_APPWIDGET_UPDATE`动作,并使用`meta-data`标签指向`widget_demo_appwidget_info.xml...

    TabLayout实现顶部tab选项卡,类似百度外卖登陆界面的tab选项卡

    在Android应用开发中,创建一个具有可滑动选项卡的用户界面是常见的需求,比如百度外卖和美团登录页面。TabLayout是Google推出的Android Design Support Library的一部分,它提供了一种优雅的方式来实现这种效果。本...

    Widget相关

    import android.appwidget.AppWidgetProvider; import android.content.Context; import android.content.Intent; public class Example extends AppWidgetProvider { @Override public void onDeleted(Context ...

    android视频播放

    在本文中,我们将深入探讨如何在Android应用中实现视频播放,特别是在涉及到AppWidget(桌面小部件)时可能遇到的问题以及解决方案。 首先,我们要关注的核心组件是`VideoView`。`VideoView`是Android SDK提供的一...

    Android高仿陌陌APP源码.zip

    1. 启动优化:分析陌陌APP启动流程,可以学习如何减少启动时间,如使用SplashScreen、预加载资源等方法。 2. 内存优化:查看源码中如何处理内存泄漏和过度绘制问题,学习使用工具如Memory Profiler进行内存分析。 ...

    Android应用源码之 电量显示Widgets插件实现.zip

    AppWidgetProvider需要在AndroidManifest.xml中注册,并监听ACTION_APPWIDGET_UPDATE、ACTION_APPWIDGET_DELETED等广播事件。 3. **布局文件**: 源码中会包含一个或多个XML文件,这些文件定义了Widget的UI结构,如...

    Android 天气预报源码

    8. **通知与Widget**:高级的天气应用可能会提供桌面小部件和通知功能,这涉及到Android的App Widget API和Notification Manager的使用。 9. **权限管理**:Android 6.0及以上版本引入了运行时权限管理,源码中需要...

    移动应用开发:Android APP开发简单的代码展示

    在本案例中,我们将探讨一个基础的Android应用程序开发流程。为了更好地理解这些概念,让我们一起看看涉及到的关键文件。 ##### 1. `res/layout/main.xml` — 应用主界面布局文件 该文件定义了应用的用户界面布局...

    Android项目源码-安卓Launcher原生桌面源码

    【Android项目源码-安卓Launcher原生桌面源码】是一个深入了解Android系统启动器(Launcher)工作原理的重要资源。源码提供了Android操作系统中的主屏幕和应用抽屉的实现细节,这对于Android开发者尤其是系统定制者...

    Android 开发随手笔记之使用摄像头拍照

    在Android开发中,使用摄像头拍照是一项常见的功能,通常有两主要方法:调用系统相机(System Camera)和自定义相机界面。本篇笔记将重点讨论如何调用系统相机进行拍照。 首先,为了能够访问和保存拍摄的照片,我们...

    widget_WIDGET_

    在Android系统中,它们是App Widget;而在Web开发中,如React或Angular,Widget可能指的是自定义的UI组件。 【压缩包子文件的文件名称列表】:仅有一个名为“widget”的文件,这可能是一个包含关于“widget_WIDGET_...

    Android实现底部切换标签

    在Android应用开发中,底部导航栏(Bottom Navigation)是一种常见的用户界面设计,它允许用户在多个顶级操作之间轻松切换。本教程将详细讲解如何在Android项目中实现底部切换标签,以及如何利用Fragment来管理不同...

    AndroidWidget:一些易于开发Android的小部件

    - **Widget组件**:Android中的Widget包括AppWidget、Chronometer、DigitalClock等,它们是Android桌面扩展的一种形式。 - **AppWidgetProvider**:这是Widget的主要组件,继承自BroadcastReceiver,负责监听并...

    widgetdemo

    "widgetdemo"项目就是一个典型的Android小部件实现示例,它展示了如何创建、配置以及更新Android小部件的基本流程。 一、Android小部件基础 1. 小部件定义:Android小部件是通过继承`AppWidgetProvider`类来创建的...

    Android_桌面开发系列(一).doc

    #### 六、Home Screen的对象加载流程 - **DesktopItemsLoader**负责从内容提供商中加载Home Screen上的所有对象信息。 - **PrivateApplicationsLoader mApplicationsLoader**用于从包管理器(Package Manager)获取...

Global site tag (gtag.js) - Google Analytics