• Service工作原理


    --摘自《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

     

  • 相关阅读:
    感谢梦想
    感谢迷茫
    CSS动画
    ES6笔记③
    Object的增。删。查。改。遍历
    js创建对象的方式 三种
    js 控制台的错误提示
    ES6笔记② 箭头函数
    ES6笔记① var 和 let的区别
    js冒泡排序
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/10083658.html
Copyright © 2020-2023  润新知