当前位置: 首页 > article >正文

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源码实现详解


http://www.kler.cn/news/362296.html

相关文章:

  • 使用QueryWrapper中IN关键字超过1000个参数后如何处理
  • 安装vue发生异常: idealTree:nodejs: sill idealTree buildDeps
  • R语言笔记(一)
  • FileLink内外网文件交换——致力企业高效安全文件共享
  • 数智教育专场(二)
  • 【Linux】僵尸进程和孤儿进程
  • PTA L1系列题解(C语言)(L1_089 -- L1_096)
  • JZ2440开发板——MMU与Cache
  • 如何使用Git推送本地搭建的仓库以及远程克隆的仓库
  • golang中的上下文
  • 滚雪球学Redis[7.4讲]:Redis在分布式系统中的应用:微服务与跨数据中心策略
  • 016_基于python+django网络爬虫及数据分析可视化系统2024_kyz52ks2
  • Python 应用可观测重磅上线:解决 LLM 应用落地的“最后一公里”问题
  • python如何基于numpy pandas完成复杂的数据分析操作?
  • 华企盾对当前网络安全挑战与应对策略探讨
  • LeetCode102. 二叉树的层序遍历(2024秋季每日一题 43)
  • 毕业设计项目系统:基于Springboot框架的心理咨询评估管理系统,完整源代码+数据库+毕设文档+部署说明
  • python将1格式化为01
  • 思科网络设备命令
  • 9个用于测试自动化的最佳AI测试工具(2024)
  • NoSQL数据库分类简述
  • DSVPN简介与应用
  • Stable Diffusion Web UI 大白话术语解释 (二)
  • 中小型医院网站:Spring Boot开发技巧
  • 【Jmeter】jmeter指定jdk版本启动
  • 利用grid sample优化BevDet