android广播注册源码,android 广播源码简要分析-注册

android broadcast

1,广播注册

静态注册:

在系统服务启动时会添加PackageManagerService,在该类的构造方法中就会对各个应用安装目录的apk文件进行扫描解析

详细步骤

1,PackageManagerService初始化的时候,扫描系统目录下的文件

e26304737bea

image.png

2,遍历循环files文件

e26304737bea

image.png

3,最终会调用两个方法:PackageParser.parsePackage()方法;scanPakageLI()方法

e26304737bea

image.png

4,进入PackageParse类;看到类里面的静态变量,估计都会知道这货是干什么用的,解析AndroidManifest.xml文件

e26304737bea

image.png

5,PackageParse类:最终跳到这里,AssetManager new出来的,然后addAssetPath(apkPath),就可以后去apk里面的资源文件了(插件化方案);

e26304737bea

image.png

6,调用方法顺序分别为:parseBaseApk->parseBaseApkCommon->parseBaseApplication;在这个方法里面有一坨代码如下:解析xml,然后将解析出来的四大组件放到集合里

e26304737bea

image.png

7,再回到PackageManagerService;

PackageParser.Package pkg = pp.parsePackage(scanFile, parseFlags);pkg对象包含了当前包里面所有的数据;然后再调用scanPackageLI()->scanPackageDirtyLI();最后将pkg里面的四大组件又add到下面的IntentResolver的子类ActivityIntentResolver、ServiceIntentResolver、ProviderIntentResolver,ArrayMap对象里面

e26304737bea

image.png

动态注册:

1,调用ContextImpl类中的registerReceiver方法:(时序图比较靠谱,看起来比较清晰,但是本人比较懒)

调用Context实现类ContextImpl的注册方法

e26304737bea

image.png

2,getReceiverDispatcher方法中的map是以BroadcastReceiver对象r为key,以ReceiverDispatcher对象rd为value保存在一个ArrayMap中,而这个ArrayMap又以Context为key,自己为value保存在LoadedApk类中的成员变量mReceivers中。这样,只要给定Context和BroadcastReceiver就可以查看LoadedApk中是否已经存在相应的广播接收分发器ReceiverDispatcher了

e26304737bea

QQ截图20171017185143.png

e26304737bea

image.png

3,接下来调用AMS的registerReceiver方法

动态注册的广播都添加到mReceiverResolver中了

总结:静态广播和动态广播注册保存的位置不一样?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/563242.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android盒子改造,【当贝市场】废旧手机改造成电视盒子详细教程

3.直接即可输出视频了,然后在手机上安装暴风影音等视频软件的tv版,即可开始观看。有人会说,旧手机电池不行,看一会儿就得没电,怎么办?首先,在你输出到电视时,你就可以给手机锁屏&…

android分辨率px跟dp,Android屏幕适配 px,dp,dpi及density的关系与深入理解

PX(pixel):即传统计算机语言中描述的像素,在Android则代表绝对像素。之所以Android中不推荐使用这种单位,正是因为不同生产厂商,不同品牌,不同屏幕的设备,其分辨率亦不一。举例来说,我们现在将某个Button的…

android 播放器 反交错,反交错- 视频横纹处理

以下名词解释摘自维基百科反交错”(deinterlacing)是将交错式(即隔行扫描)(interlace)影像讯号转换为渐进式(逐行扫描)(progressive)影像讯号的一种方法。因为装置处理速度以及带宽的限制下,广播电视系统,例如NTSC或是PAL,都是使用交错式讯号…

android webview简单使用,android WebView 简单使用Demo

activity配置文件:activity_main.xmlandroid:layout_width"match_parent"android:layout_height"match_parent"android:orientation"vertical" >android:layout_width"match_parent"android:layout_height"wrap_co…

android one x2,HTC One X 深度OS Android4.1.2 大气不失稳重 雍容华贵 流畅运行

您可能感兴趣的话题:rom刷机核心提示:注意事项:1. 本刷机教程需在windows操作系统下进行2. 刷机前确保手机电量不少于50%3. 为避免资料丢失,刷机前请先备份个人资料4. 本教程内容均来自于互联网并经N多网官方整理刷机前必看注意事…

android q全局夜间模式,安卓Q新功能全局夜间模式,网友:都9102年了,魅族Flyme早就有...

原标题:安卓Q新功能全局夜间模式,网友:都9102年了,魅族Flyme早就有目前市面上的智能手机系统基本是苹果的iOS和谷歌的安卓两分天下,其中,安卓系统的用户分布更加广泛。近日,安卓Q系列被正式曝光…

android 教程概要,Android精通教程-第一节Android入门简介

前言大家好,我是 Vic,今天给大家带来Android精通教程-第一节Android入门简介的概述,希望你们喜欢每日一句If life were predictable it would cease to be life, and be without flavor.--- Eleanor Roosevelt每日一句入门工具的安装第一步&a…

市场销售的计算机主机硬盘主要有,一种具有旋转功能的计算机硬盘销售架的制作方法...

本实用新型涉及硬盘销售技术领域,具体为一种具有旋转功能的计算机硬盘销售架。背景技术:硬盘是电脑主要的存储媒介之一,由一个或者多个铝制或者玻璃制的碟片组成,碟片外覆盖有铁磁性材料,硬盘有固态硬盘、机械硬盘和混…

计算机设备中找不到网络适配器,驱动技巧:解决设备管理器中找不到网卡的问题...

类型:网卡问题:设备管理器中找不到网卡,因此驱动精灵万能网卡版无法安装网卡驱动解决方案:操作步骤:1、首先确认是否有网卡查看电脑周边接口有无RJ45网线接口。一般在后面。如下图所示:2、若电脑配置有网卡&#xff0c…

计算机原理2408,《计算机组成原理实验》课程教学大纲

《计算机组成原理实验》课程教学大纲教学模块(章)教学目标基本运算器试验了解运算器的组成结构,掌握运算器的工作原理。静态随机存储器实验掌握静态随机存储器 RAM 工作特性及数据的读写方法。微程序控制器实验掌握微程序控制器的组成原理,掌握微程序的编…

win7计算机双击变管理,如何修复Win7系统鼠标单击以双击

鼠标在计算机中的位置非常重要。就像我们的指南针。我们需要的是,只需移动并单击它即可。然后最近,Windows 7 Ultimate 64位系统用户报告说win7鼠标的单击已更改为双击,这种情况无疑给我们的常规操作增加了麻烦,让我们看一下如何解…

量子计算机功率,量子计算功耗知多少

邻家怪蜀黍 2015.10.06 , 10:06 pm——量子计算功耗知多少google的量子智能实验室刚刚制造的最新的计算机可能是目前第一台商业量子计算机了。而这台新型的计算机能够比传统计算机更快的、使用相对更少的功耗来完成相同的计算任务。不过量子计算到底能节约多少功耗目前还是个迷…

升级计算机方案,关于计算机升级方案

2004-12-28cpu 赛扬D2.4G 内存 金士顿256M DDR400 硬盘 酷鱼80G 7200转 液晶显示器用明基或三星的2500元左右 想问主板用华硕什么样的好?用华硕845PE的行不行?与什么样的显卡相配,注:并不玩大型游戏?CPU: 赛扬4 2。0G …

网易126邮箱服务器设置,网易闪电邮企业邮箱设置教程(POP3)

原标题:网易闪电邮企业邮箱设置教程(POP3)使用网易闪电邮收发企业邮箱邮件,下面是设置教程1、启动闪电邮后,点击“邮箱---新建邮箱账户”菜单,如下图:2、输入“邮箱地址和密码”,点击下拉箭头继续设置&…

django2与ajax,Python-Django-Ajax进阶2

-forms组件的渲染错误信息在模板中:{{ foo.errors.0 }}-forms使用bootstrap样式widgetwidgets.EmailInput(attrs{class:form-control}))-全局和局部钩子函数AOP:面向切面编程-局部钩子函数(再校验name)def clean_name(self):# 从cleaned_data中取出字段的值name self.cleaned_…

java方法的传递方式_JAVA基础--方法传参

JAVA基础--方法传参为啥拿这个当话题?在初学者阶段,许多童鞋都对方法传参比较迷茫,知其然不知其所以然。一.先说说参数传递的几个术语:值调用(call by vale):表示方法接收的是调用者传递的值。引用调用(call by reference):表示方…

java udp 协议_网络协议 - UDP 协议详解

网络协议 - UDP 协议详解 基于TCP和UDP的协议非常广泛,所以也有必要对UDP协议进行详解。pdai UDP概述UDP(User Datagram Protocol)即用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第…

java线程卡住排查_基于 Java 线程栈 排查问题

除日志外,还有没有别的方式跟踪线上服务问题呢?或者,跟踪并排除日志里无法发现的问题?方法当然是有的,就是通过现场快照定位并发现问题。我们所说的现场,主要指这两方面:Java 线程栈。线程栈是J…

java实验二答案天津商业大学_天津商业大学信息安全实验一

天津商业大学信息安全实验一 1《信息安全技术》实 验 报 告 书实验名称: 实验一Internet应用风险专 业: 电子商务班 级: 1203班姓 名: 代常发学 号: 20124934指导老师: 丁雷信息工程学院2015 年 5 月2目 录…

java前端的日期插件_几个前端时间插件总结

几个前端时间插件总结总结一下几款时间插件,分别是- [ ] jeDate 手册http://www.jemui.com/jedate/- [ ] bootstrap-datetimepicker 下载地址- [ ] My97DatePicker 下载地址- [ ] jQuery UI 插件Datepicker下载地址并没有哪款完全超越另外一款,主要还是看…