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

     

  • 相关阅读:
    Codeforces Round #456 (Div. 2)
    Codeforces Round #455 (Div. 2)
    Codeforces Round #453 (Div. 1)
    Codeforces Round #450 (Div. 2)
    退役了
    退役了
    这个博客不想要了
    Hello!The familiar and strange world.
    真正的退役了。
    bzoj4231: 回忆树
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/10083658.html
Copyright © 2011-2022 走看看