bindService 流程学习总结

Context.bindService
	ContextImpl.bindServiceCommon
		ActivityManagerService.bindIsolatedService 
			ActiveServices.bindIsolatedService
                retrieveServiceLocked 获取服务信息;
                bringUpServiceLocked  拉起服务
                    startProcessLocked创建进程 (进程不存在时)
                    realStartServiceLocked
                        app.thread.scheduleCreateService  (ActivityThread)创建服务
                            ActivityThread.handleCreateService
                                ContextImpl.createAppContext    //创建Context 对象
                                packageInfo.makeApplication     //
                                service.attach
                                service.onCreate
                                serviceDoneExecuting    //解除之前设置的ANR检查
                        requestServiceBindingsLocked    绑定服务;
                            requestServiceBindingLocked
                                bumpServiceExecutingLocked
                                ActivityThread.scheduleBindService 
                                    s.onBind //回调远程服务的onBind 方法
                                    AMS 的publishService  // 
                                        ActiveServices.publishService
                                            c.conn.connected(r.name, service); //LoadedApk.ServiceDispatcher.InnerConnection.connected 
                                                ServiceDispatcher.connected  
                                                    RunConnection.run
                                                        doConnected
                                                            service.linkToDeath  //
                                                            Connection.onServiceConnected  //回调客户端ServiceConnection.onServiceConnected
                        sendServiceArgsLocked   //开启service的生命周期onStartCommand

参考链接:Android四大组件之bindService源码实现详解

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Android】MVP架构

MVP架构简介 MVP(Model-View-Presenter)是一种常见的软件架构模式,尤其在Android应用开发中被广泛使用。它将应用程序分为三层:Model、View 和 Presenter,以实现职责分离,提高代码的可维护性和可测试性。 …

ant design vue树选择器实现部分层级禁用(指定层级或依据字段判断)

1、依据字段判断是否禁用 const handData (array, level?) > {array.forEach((item) > {if (level 0) {//获取一级菜单item.title item.levelName;item.value item.code;if (item.type LAYER) {item.disabled true;} else if (item.type JOB) {item.disabled f…

分享几个办公类常用的AI工具

办公类 WPS AI讯飞智文iSlideProcessOn亿图脑图ChatPPT WPS AI 金山办公推出的协同办公 AI 应用,具有文本生成、多轮对话、润色改写等多种功能,可以辅助用户进行文档编辑、表格处理、演示文稿制作等办公操作。 https://ai.wps.cn/ 讯飞智文 科大讯飞推…

OceanBase 首席科学家阳振坤:大模型时代的数据库思考

2024年 OceanBase 年度大会 即将于10月23日,在北京举行。 欢迎到现场了解更多“SQL AI ” 的探讨与分享! 近期,2024年金融业数据库技术大会在北京圆满举行,聚焦“大模型时代下数据库的创新发展”议题,汇聚了国内外众多…

85.【C语言】数据结构之顺序表的中间插入和删除及遍历查找

目录 3.操作顺序表 1.分析中间插入函数 函数的参数 代码示例 图片分析 main.c部分改为 在SeqList.h添加SLInsert函数的声明 运行结果 2.分析中间删除函数 函数的参数 代码示例 图片分析 main.c部分改为 在SeqList.h添加SLErase函数的声明 运行结果 承接84.【C语…

前端开发:Vue中数据绑定原理

Vue 中最大的一个特征就是数据的双向绑定,而这种双向绑定的形式,一方面表现在元数据与衍生数据之间的响应,另一方面表现在元数据与视图之间的响应,而这些响应的实现方式,依赖的是数据链,因此,要…

未来汽车驾驶还会有趣吗?车辆动力学系统简史

未来汽车驾驶还会有趣吗?车辆动力学系统简史 本篇文章来源:Schmidt, F., Knig, L. (2020). Will driving still be fun in the future? Vehicle dynamics systems through the ages. In: Pfeffer, P. (eds) 10th International Munich Chassis Symposiu…

量子纠错--shor‘s 码

定理1 (量子纠错的条件) C是一组量子编码,P是映射到C上的投影算子。假设是一个算子元素描述的量子操作,那么基于量子编码C,存在一个能对抗描述的噪声的纠错操作R的充要条件是 对某个复元素厄米矩阵成立。 将算子元素称为导致的错误。如果这样…

【大模型实战篇】大模型分词算法Unigram及代码示例

1. 算法原理介绍 与 BPE 分词(参考《BPE原理及代码示例》)和 WordPiece 分词(参考《WordPiece原理及代码示例》)不同,Unigram 分词方法【1】是从一个包含足够多字符串或词元的初始集合开始,迭代地删除其中的…

WPF+MVVM案例实战(四)- 自定义GroupBox边框样式实现

文章目录 1、项目准备2、功能实现1、EnviromentModel.cs 代码2、GroubBoxViewModel.cs 代码实现3、ViewModelLocator.cs 依赖注入4、GroubBoxWindow.xaml 样式布局5、数据绑定 3、效果展示4、资源获取 1、项目准备 打开项目 Wpf_Examples,新建 GroubBoxWindow.xaml…

龙蟠科技业绩压力显著:资产负债率持续攀升,产能利用率也不乐观

《港湾商业观察》施子夫 黄懿 去年十月至今两度递表后,10月17日,江苏龙蟠科技股份有限公司(以下简称,龙蟠科技;603906.SH,02465.HK)通过港交所主板上市聆讯。 很快,龙蟠科技发布公告称,公司全…

基于STM32的Android控制智能家政机器人

基于STM32的Android控制智能家政机器人 基于STM32的Android控制智能家政机器人一、项目背景与意义二、系统设计方案三、硬件电路设计四、软件设计与实现4.1 Android端软件设计4.2 机器人端软件设计 五、系统调试与测试六、结论与展望七、附录 基于STM32的Android控制智能家政机…

信息安全工程师(55)网络安全漏洞概述

一、定义 网络安全漏洞,又称为脆弱性,是网络安全信息系统中与安全策略相冲突的缺陷,这种缺陷也称为安全隐患。漏洞可能导致机密性受损、完整性破坏、可用性降低、抗抵赖性缺失、可控性下降、真实性不保等问题。 二、分类 网络安全漏洞可以根据…

HDU Sum

题目大意:给你一个数字 n ,n 个数字能分成多少组分类情况。 思路:这题要用插空法,一共 n 个数字,所以一共有 n - 1 个空可以插入,所以这道题目的答案就是,由二项式定理易得这个式子的和为 。但是…

Web应用框架-Django应用基础

1. 认识Django Django是一个用Python编写的开源高级Web框架, 旨在快速开发可维护和可扩展的Web应用程序。 使用Django框架的开发步骤: 1.选择合适的版本 2.安装及配置 3.生成项目结构 4.内容开发 5.迭代、上线、维护 Django官网: Djang…

UE4_Niagara基础实例—10、位置事件

效果: 若要为烟花火箭创建尾迹效果,则可将 生成位置事件(Generate Location Event) 模块放置到火箭发射器的粒子更新(Particle Update)组中。然后,尾迹发射器可使用位置数据生成跟随火箭的粒子…

离散制造和流程制造分别是什么?它们有什么区别?

为何有的企业生产过程看似一气呵成,而有的则是由多个环节组合而成?其实这就涉及到了制造业的两种常见生产模式。 流程制造离散制造 那么,在生产管理方面,离散制造和流程制造分别有什么特点、区别呢? 今天&#xff0…

C++游戏开发教程:从入门到进阶

C游戏开发教程:从入门到进阶 前言 在游戏开发的世界里,C以其高效的性能和灵活的特性,成为了众多游戏开发者的首选语言。在本教程中,我们将带您从基础知识入手,逐步深入到实际的游戏开发项目中。无论您是初学者还是有…

二百七十、Kettle——ClickHouse中增量导入清洗数据错误表

一、目的 比如原始数据100条,清洗后,90条正确数据在DWD层清洗表,10条错误数据在DWD层清洗数据错误表,所以清洗数据错误表任务一定要放在清洗表任务之后。 更关键的是,Hive中原本的SQL语句,放在ClickHouse…

深入理解Android WebView的加载流程与事件回调

在Android开发中,WebView用于显示网页和执行JavaScript。理解其加载流程和事件回调对于开发一个功能丰富且用户友好的基于Web的应用至关重要。本文将详细介绍 WebView 加载一个URL时的整个流程和相关的事件回调,帮助开发者更好地掌握其使用方法和处理可能…