--摘自《android插件化开发指南》

一.在新进程启动Service

第一步:APP向AMS发送一个启动Service的消息

通过AMN/AMP把要启动的Service信息发送给AMS

第二步:AMS创建新的进程

这一步,AMS会检查Service是否在AndroidManifest中申明。AMS检查启动Service的进程是否存在,若不存在,先把Service信息保存下来,然后创建一个新进程。

在AMS中,每个Service,都使用ServiceRecord对象来保存

第三步:新进程启动,通知AMS

这一步会创建新的ActivityThread

第四步:AMS把传进来的ActivityThread对象改造为ATP,通过ATP把要启动的Service信息发送给新进程

第五步:新进程启动Service

其中第1/3/4步都是跨进程通信,如果是启动统一进程中的Service,则省略掉启动新进程那两步

二.绑定Service

绑定就是把AMS发送的启动消息换为绑定消息,app会收到AMS的两个消息,启动Service和绑定Service,并把一个Binder对象传给AMS

最后,AMS会把Binder对象发送给App,这里用的是AIDL,AIDL的名字是IServiceConnection

Service工作原理的更多相关文章

  1. Web Service工作原理

    Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的 ...

  2. [转载] Web Service工作原理及实例

    一.Web Service基本概念   Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求, ...

  3. k8s 理解Service工作原理

    什么是service? Service是将运行在一组 Pods 上的应用程序公开为网络服务的抽象方法. 简单来说K8s提供了service对象来访问pod.我们在<k8s网络模型与集群通信> ...

  4. Webservice工作原理及实例

    Web Service工作原理及实例   一.Web Service基本概念   Web Service也叫XML Web Service WebService是一种可以接收从Internet或者In ...

  5. 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 工作原理和相关组件(三)

    RAC 工作原理和相关组件(三) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体 ...

  6. Servlet的生命周期及工作原理

    Servlet生命周期分为三个阶段: 1,初始化阶段  调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destroy()方法 Servlet初始化阶段: 在 ...

  7. Linux可插拔认证模块(PAM)的配置文件、工作原理与流程

    PAM的配置文件: 我们注意到,配置文件也放在了在应用接口层中,他与PAM API配合使用,从而达到了在应用中灵活插入所需鉴别模块的目的.他的作用主要是为应用选定具体的鉴别模块,模块间的组合以及规定模 ...

  8. 轻松搞懂WebService工作原理

    用更简单的方式给大家谈谈WebService,让你更快更容易理解,希望对初学者有所帮助. WebService是基于网络的.分布式的模块化组件. 我们直接来看WebService的一个简易工作流程: ...

  9. AJAX工作原理及其优缺点

    1.什么是AJAX?AJAX全称为"Asynchronous JavaScript and XML"(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术.它 ...

随机推荐

  1. ionic3 打包报错[ERROR] An error occurred while running cordova prepare (exit code 1):

    解决办法:删除并重新添加平台以使用以下命令解决问题: cordova platform rm ios cordova platform add ios 如果执行 ionic cordova build ...

  2. XSS-HTML&javaSkcript&CSS&jQuery&ajax-CSS

    CSS 1.表单的处理 <style> table, td, th{ border:1px; solid green;} th{ background-color:green; color ...

  3. SpringMVC 框架完成图片上传到项目路径操作

    /** * 保存添加 * * @return */ @RequestMapping(value = "taizhang/add.action", method = { Reques ...

  4. JSON数据写入和解析

    如何写入JSON 需要第三方jar包,JSON包 //写入json数据 public static String sendJson() { JSONObject json = new JSONObje ...

  5. docker 给none镜像打镜像

    1.遇到none的镜像打tag方式: docker  tag  + docker ID    + 命名:版本名 案例:docker  tag  41b7307026c0  gitlab:test 这就 ...

  6. dom操作节点之常用方法

    DOM:获取节点:{1. document.getElementById (元素id):通过元素id找到节点2. document.getElementsByClassName (元素类名classN ...

  7. IsNullOrEmpty和IsNullOrWhiteSpace的区别

    IsNullOrEmpty // string /// <summary>Indicates whether the specified string is null or an < ...

  8. Tomcat模型结构

    一.请求过程 Tomca的两大组件:Connecter和Container Connecter组件 1.Connecter将在某个指定的端口上侦听客户请求,接收浏览器的发过来的 tcp 连接请求,创建 ...

  9. Response.AddHeader小结

    (一)文件下载,指定默认名 Response.AddHeader("content-type","application/x-msdownload"); Res ...

  10. WPF: Hide grid row

    http://stackoverflow.com/questions/2502178/wpf-hide-grid-row Setting all the Items in the Row to Vis ...