android serviceconnection unbind流程,Android unbindService 流程分析

基于Android 6.0的源码剖析, 分析bind service的启动流程。

/frameworks/base/core/java/android/app/ContextImpl.java

/frameworks/base/core/java/android/app/LoadedApk.java

/frameworks/base/core/java/android/app/IServiceConnection.aidl(自动生成Binder两端)

一. unbind

文章bindService启动过程分析,介绍了 bindService 的过程,本文介绍其对应的另一个操作 unbind。

unbind调用链:

AMP.unbindService

AMS.unbindService

AS.unbindServiceLocked

AS.removeConnectionLocked

ATP.scheduleUnbindService

AT.scheduleUnbindService

AT.handleUnbindService

Service.onUnbind

AS.bringDownServiceIfNeededLocked

AS.bringDownServiceLocked

ATP.scheduleUnbindService

AT.scheduleUnbindService

ATP.scheduleStopService

AT.scheduleStopService

1.1 AMP.unbindService

... //省略,未完待续

二. onServiceDisconnected

当service所在进程死亡后,binderDied死亡回调后触发的。

2.1 binderDied

[-> LoadedApk.ServiceDispatcher.DeathMonitor]

private final class DeathMonitor implements IBinder.DeathRecipient

{

DeathMonitor(ComponentName name, IBinder service) {

mName = name;

mService = service;

}

public void binderDied() {

death(mName, mService); //【见流程2.2】

}

final ComponentName mName;

final IBinder mService;

}

2.2 death

[-> LoadedApk.ServiceDispatcher]

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

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

相关文章

【JUnit 报错】 method initializationerror not found:JUnit4单元测试报错问题

今天是用JUnit测试一段代码,报错method initializationerror not found::出现如下问题: 双击这个就显示出现如下的错误: 查询网上,说是junit版本的问题: 那我就不使用JUnit这个Libernary了,下载…

flash 不显示 旋转 补间动画_【图片】Flash入门5:详解制作补间动画(非传统补间)【flash软件吧】_百度贴吧...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼●●关于补间动画●●●1、准备事项注意:像 Flash 中的大多数内容一样,动画不需要任何 ActionScript。然而,如果您愿意,您可以使用 ActionScript 创建动画。在创建补间之前&#xff0…

math.ceil带小数点_Python中带有示例的math.ceil()方法

math.ceil带小数点Python math.ceil()方法 (Python math.ceil() method) math.ceil() method is a library method of math module, it is used to get the ceil value of a given number, it accepts a number/numeric expression and returns the smallest integral value wh…

将byte数组以html形式输出到页面,java 数组显示到html

java 数组显示到html[2021-02-05 01:08:54] 简介:php去除nbsp的方法:首先创建一个PHP代码示例文件;然后通过“preg_replace("/(\s|\&nbsp\;| |\xc2\xa0)/", " ", strip_tags($val));”方法去除所有nbsp即可。推荐:…

JDK各版本新增的主要特性

JDK1.5新特性: 1.自动装箱与拆箱: 2.枚举 3.静态导入,如:import staticjava.lang.System.out 4.可变参数(Varargs) 5.内省(Introspector),主要用于操作JavaBean中的属性&…

oracle 导入sql文件 汉字乱码_将现有的sql脚本导入 Oracle 数据库,中文乱码问题...

将现有的sql 脚本导入 Oracle数据库比如 在windows 系统下,可以写一个 bat 来实现直接导入如:bat 中的内容如下,logs.log 将会记录执行日志sqlplus user/passworddbname create.sql > logs.logcreate.sql 中的内容可以是需要执行的sql 语句…

html图片多边形怎么写,使用CSS3构建的图像多边形裁剪动画特效

CSS语言:CSSSCSS确定html {background: #333;}.polygon {-webkit-clip-path: polygon(50% 0%, 79.38926% 9.54915%, 97.55283% 34.54915%, 97.55283% 65.45085%, 79.38926% 90.45085%, 50% 100%, 20.61074% 90.45085%, 2.44717% 65.45085%, 2.44717% 34.54915%, 20.…

python函数示例_带Python示例的complex()函数

python函数示例Python complex()函数 (Python complex() function) complex() function is a library function in Python, it is used to get the complex number from given a real number or/and an imaginary number (which is an optional part), it accepts either a rea…

windows 下 git 禁用 CRLF 转换 LF

2019独角兽企业重金招聘Python工程师标准>>> windows中的换行符为 CRLF, 而在linux下的换行符为LF,所以在执行add . 时出现提示,解决办法: 删除根目录 .git 文件夹禁用自动转换 > git config --global core.autocrl…

cmd执行sql文件路径 oracle_oracle 基础 执行sql文件

Oracle执行外部文件:sql>new.sql执行多个sql文件:1.把所有的文件都放在同一个目录下,然后在命令行里执行命令:c:>dir/b > d:/1.sql会把所有的sql文件名都输出到一个sql文件中。2.用UltraEdit打开生成的sql文件,altC切换到…

获取天气html,使用htmlparser获取sohu的天气预报

首先,我们新建一个类,存放天气信息/** Created on 2005-3-8** To change the template for this generated file go to* Window>Preferences>Java>Code Generation>Code and Comments*/packageorg.exoplatform.portlets.chinaweather.compon…

使用gulp构建前端(三)

为什么80%的码农都做不了架构师?>>> 使用gulp构建前端(三) 紧接着上述文章内容,开始新的插件的使用 插件三 gulp-clean-css,作用减小文件大小,并给引用url添加版本号避免缓存,一个需…

c++中atan2函数_atan2()函数以及C ++中的示例

c中atan2函数C atan2()函数 (C atan2() function) atan2() function is a library function of cmath header, it is used to find the principal value of the arc tangent of y/x, where y is the proportion of the y-coordinate and x is the proportion of the x-coordin…

python不合法的布尔表达式_python测试题

一、填空题 1.Python使用符号标示注释;以划分语句块。 2、Python序列类型包括 、、三种; 是Python中唯一的映射类型。 3、Python中的可变数据类型有,不可变数据类 型有。 4、Python的数字类型分为、、等子类型。 5、设s=‘abcdefg’,则s[3]值是 ,s[3:5]值是 , s[:5]值是…

网站html标签如何优化,网站HTML标签优化教程

真正需要SEOer掌握并经常使用的HTML标签也就那么几个,本小节丈哥seo带来的是页面HTML标签优化。title标签 – 标题标签1)title标签用法网站SEOHTML标签优化教程 – 丈哥seo2)标题标签的作用关于网站标题写法与操作技巧有许多,需要怎么优化标题的朋友可以…

hypot函数_hypot()函数与C ++中的示例

hypot函数C hypot()函数 (C hypot() function) hypot() function is a library function of cmath header, it is used to find the hypotenuse of the given numbers, it accepts two numbers and returns the calculated result of hypotenuse i.e. sqrt(x*x y*y). hypot()…

docker 磁盘问题:device or resource busy

问题:[roothdp-gp-dk02 ~]# docker start 01ea65845e45Error response from daemon: Cannot start container 01ea65845e45: Error getting container 01ea65845e4547be24bc3db0bc3b424faf52b8a0534eb525aa829dd9fd6081c2 from driver devicemapper: Error mounting…

axure form列表_常见的列表页如何用Axure画出来

列表页是PM画原型的时候最容易碰到的页面类型,那么如何快速画出并且展现交互呢?我们从具体的例子开始讲解其中的技巧,和各种不同的演变场景。希望初级PM可以通过这篇文章改进下自己的画法。列表页基本是由页面框架,上导航&#xf…

python中divmod_divmod()函数以及Python中的示例

python中divmodPython divmod()函数 (Python divmod() function) divmod() function is a library function, it is used to get the quotient and remainder of given values (dividend and divisor), it accepts two arguments 1) dividend and 2) divisor and returns a tup…

html 轮播图的鼠标事件,这是图片轮播的代码 html+css,怎么加上鼠标悬停移出继续功能?...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼.one {position: absolute;width: 500px;height: 400px;overflow: hidden;}.one_cantent img {width: 500px;height: 300px;float: left;}.one_cantent {width: 2500px;height: 400px;position: absolute;left: 0px;animation-name…