zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    logging 用于便捷记录日志且线程安全的模块
    win10安装多个mysql实例
    Windows安装mysql-msi
    webAPI解决跨域问题
    net core通过中间件防御Xss
    导出excel
    DES加密/解密类
    MySQL优化配置
    上传文件到服务器
    HttpWebRequest调用接口
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/10083658.html
Copyright © 2011-2022 走看看