桌面小部件AppWidgetProvider简单分析
1、一般桌面小部件涉及到的类
- AppWidgetProvider :BroadcastRecevier子类,用于接收更新,删除通知
- AppWidgetProvderInfo:AppWidget相关信息(大小,更新频率等),xml形式
- AppWidgetManger:AppWidget管理类,用于向provider发送消息
- RemoteViews:可以在其他进程中运行的类,用于向provider发送通知。
- RemoteViewsService : 是一个远程的服务适配器 可以请求RemoteViews,管理RemoteViews的服务.
- RemoteViewsFactory : 提供了RemoteViewsFactory用于填充远程集合视图。
2、RemoteViewsService分析:
- RemoteViewsService是一个抽象类,继承了Service,底层中有IRemoteViewsFactory.aidl,且发现该Service中的IBinder是通过AIDL实现的,类中定义了接口RemoteViewsFactory,接口中的方法通过AIDL与其进程进行通讯,即跨进程通信。当有多个RemoteViewsFactory时,存储在HashMap sRemoteViewFactories中便于统一管理
- 故当我们的widget中包含ListView,Gridview等集合视图的时候.我们就需要借助一个类RemoteViewsService,继承RemoteViewsService实现接口并复写onGetViewFactory 返回RemoteViewsFactory
3、RemoteViews分析:
- RemoteViews并没有继承系统View,只是实现了Parcelable(Android特有的方式)和Filter接口。故RemoteViews实现了序列化。
- 底层中RemoteViews.aidl,故也是通过AIDL与其他进程通讯的,即跨进程通信
4、AppWidgetProvider分析:
- AppWidgetProvider继承了BroadcastRecevier,生命周期也比较简单,可以参考demo:https://github.com/lelelongwang/TestApp 中的MyAppWidget中的log
5、AppWidgetManager分析:
- 是个AppWidget工具类,单例的方式实现。可以通过getInstance()获取实例。
桌面小部件AppWidgetProvider简单分析的更多相关文章
- Android开发中实现桌面小部件
详细信息请参考原文:Android开发中实现桌面小部件 在Android开发中,有时候我们的App设计的功能比较多的时候,需要根据需要更简洁的为用户提供清晰已用的某些功能的时候,用桌面小部件就是一个很 ...
- Android 桌面小部件
1. 添加AppWidgetProvider 实际上就是个带有界面的BroadcastReceiver public class SimpleWidgetProvider extends AppWid ...
- 解决 三星Note3 桌面小部件不实时更新/不刷新 的问题
机型及问题描述:我的是三星note3 (国行 SM-N9008V),已ROOT,安装了LBE安全大师.在桌面小部件中,有些不会实时更新.比如有 滴答清单(办过的事项无法勾选),百度云音乐(歌曲播放更新 ...
- 桌面小部件Wight父类AppWidgetProvider的三个方法
onUpdate()这个方法会在每次更新App Widget的时候调用,数据更新的逻辑都写在这个方法里边.而且要注意的是:在用户添加小部件的时候,会首先调用这个方法,应该在这个方法里进行初始化操作,比 ...
- 桌面小部件----LED电子时钟实现
桌面控件是通过 Broadcast 的形式来进行控制的,因此每个桌面控件都对应于一个BroadcastReceiver.为了简化桌面控件的开发,Android 系统提供了一个 AppWidgetPro ...
- Android Widget 小部件(一) 简单实现
在屏幕上加入Widget:或长按屏幕空白处,或找到WidgetPreview App选择. 原生系统4.0下面使用长按方式,4.0及以上 打开WIDGETS 创建Widget的一般步骤: 在menif ...
- Android 手机卫士14--Widget窗口小部件AppWidgetProvider
1.AndroidManifest.xml根据窗体小部件广播接受者关键字android.appwidget.action.APPWIDGET_UPDATE 搜索android:resource=&qu ...
- 优质Android小部件:索尼滚动相册
虽然骚尼手机卖的不怎么样,但是有些东西还是做的挺好的,工业设计就不用说了,索尼的相册的双指任意缩放功能也是尤其炫酷.其桌面小部件滚动相册我觉得也挺好的,比谷歌原生的相册墙功能好多了,网上搜了一下也没发 ...
- 【Android界面实现】AppWidght全面学习之电量监控小部件的实现具体解释
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/bz419927089/article/details/35791047 前几天翻看之前下载的各种资料 ...
随机推荐
- Echarts中X轴坐标太密集,分段显示
在axisLabel中设置刻度间隔interval,再加上强制显示最大值showMaxLabel和最小值showMinLabel axisLabel: {//X轴文字 interval: day == ...
- Android Studio用上Visual Studio Android Emulator
背景介绍 第一次接触Android官方的AVD(Android Virtual Device)时你可能会吐槽又慢又丑,不要紧,微软作为新晋安卓阵营最佳开发商,其实也为我们准备了一个脱胎于Windows ...
- flex mx:TabNavigator进行选项卡切换,需要进行交互时。发生Error #1009错误
当需要进行 mx:TabNavigator选项卡进行切换时,需要进行交互,然后却报了"TypeError: Error #1009: 无法访问空对象引用的属性或方法."错误,产生这 ...
- Linux从头学02:x86中内存【段寻址】方式的来龙去脉
作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux. ...
- acwing 890. 能被整除的数
#include<bits/stdc++.h> #define ll long long using namespace std; int m; int n,p[20]; int sum, ...
- 『动善时』JMeter基础 — 54、JMeter聚合报告详解
目录 1.聚合报告介绍 2.聚合报告界面详解 3.聚合报告中信息点说明 (1)百分位数的说明 (2)吞吐量说明 提示:聚合报告组件的使用和察看结果树组件的使用方式相同.本篇文章主要是详细的介绍一下聚合 ...
- 连接mysql数据库实现增删改查(一)
在python中我们通过pymysql来连接数据库,具体实现如下 ''' 连接mysql数据库 此类进行封装了一些基础的操作数据库方法 ''' import pymysql from Homework ...
- MySQL 数据排序 order by
1.单一字段排序 select * from tablename order by field1 desc; 排序采用order by+排序字段 升序关键字(asc,desc),排序字段可以放多个,多 ...
- Java实验项目三——编程实现Person类,学生类的设计及其继承关系
Program: 编程实现Person类,学生类的设计及其继承关系 代码如下: 定义抽象类Person 1 /* 2 * Description:建立抽象类 3 * 4 * Written By:Ca ...
- ARTS起始篇
ARTS简要说明(每周需要完成以下四项): Algorithm:每周至少做一道 leetcode 的算法题,编程训练.刻意练习. Review:需要阅读并点评至少一篇英文技术文章,这个是四项里面对我最 ...