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

Android中AppWidget加载流程(二)

阅读更多

1. 用户长按Launcher弹出添快捷组件的Dialog,选择添加AppWidget,这时会打开一个Activity(AppWidgetPickActivity)显示系统中全部

 

     AppWidget,单击某一个AppWidget后会做以下操作:

     (1) 通过AppWidgetService获取一个最新的appWidgetId值。

     (2) 根据获取的appWidgetId值,向单击的AppWidget组件发出APPWIDGET_ENABLED和APPWIDGET_UPDATE更新广播。并向

 

           /data/system/appwidgets.xml中添加此AppWidget的基本信息。

2. 启动AppWidgetPickActivity(第1步中提到)时使用的是startActivityForResult()方法,所以在向所单击的AppWidget组件发出

 

     APPWIDGET_ENABLED和APPWIDGET_UPDATE更新广播后会执行onActivityResult()方法,做以下准备工作:

     (1) 将需要被添加到Launcher的AppWidget基本信息保存到数据库中。

     (2) 根据查找到的appWidgetId值(整型值)创建LauncherAppWidgetHostView布局对象。

     (3) 根据查找到的appWidgetId值(整型值)从AppWidgetService中获取RemoteViews对象(因为是第一次启动所以RemoteViews对象

 

           为空)。

     (4) 将获取到的RemoteViews对象的布局解析并设置到第(2)步中创建的LauncherAppWidgetHostView布局对象中。

     (5) 将LauncherAppWidgetHostView布局对象添加到Launcher的WorkSpace中(因为RemoteViews对象为空,所以只在Launcher的

 

           WorkSpace中占了一个位置)。

3. 在第1步中已经向需要添加到Launcher中的AppWidget发出了更新消息(注意:第一步和第二步是异步执行的),继续做以下事情:

     (1) 每个AppWidget接收到广播后都会调用onEnabled()方法和onUpdate()方法,在onEnabled()方法中进行一些初始化操作,在

 

           onUpdate()方法中创建RemoteViews布局对象并通过AppWidgetManager的updateAppWidget(int appWidgetId, RemoteViews

 

           remoteViews)方法通知AppWidgetService对象用RemoteViews对象更新appWidgetId所对应的AppWidget.

     (2) AppWidgetService接收到了appWidgetId和RemoteViews后,通过appWidgetId查找已经被添加到Launcher的

 

           LauncherAppWidgetHostView布局对象,并将RemoteViews中的布局更新到LauncherAppWidgetHostView布局对象中。

 

           AppWidget显示在Launcher中。

分享到:
评论

相关推荐

    基于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桌面小部件的创建步骤

    <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget_demo_appwidget_info" /> ``` 3. **创建Widget配置XML**: 在`res/xml`目录下,创建`widget_demo_appwidget_info.xml`...

    Android高仿陌陌APP源码.zip

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

    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提供的一...

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

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

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

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

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

    通过分析这个源码,开发者不仅可以了解到Android Launcher的基本工作流程,还能学习到如何根据自己的需求进行二次开发,例如添加新的特性或优化性能。对于想要深入Android系统层面的开发者来说,这是一个绝佳的学习...

    Android 天气预报源码

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

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

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

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

    以上就是Android中调用系统相机拍照的基本流程。这种方法简单快捷,但无法对相机功能进行定制,如调整参数或添加特殊效果。如果需要更高级的控制,可以考虑实现自定义相机界面,但这需要对Camera API有深入的理解。

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

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

    android2.3 launcher分析二

    - `<appwidget>`标签用于定义桌面组件(Widget)。 - `launcher:className`指定Widget提供者的类名。 - `launcher:packageName`指定Widget提供者的包名。 #### 配置示例 ```xml launcher:className=...

    widgetdemo

    3. `appwidget-provider.xml`配置:在`res/xml`目录下,创建`appwidget-provider.xml`文件,用于定义小部件的元数据,如最小宽度、高度、更新频率等。 二、小部件生命周期 1. 小部件安装:当用户在主屏幕上添加小...

    widget_WIDGET_

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

    Android实现底部切换标签

    在Android应用开发中,底部导航栏(Bottom...这就是在Android中实现底部切换标签的基本流程。实际开发中,你可能还需要考虑状态保存、动画效果、夜间模式等高级功能,但以上内容已经足够构建一个基础的底部导航栏系统。

Global site tag (gtag.js) - Google Analytics