• Android 应用程序进程启动


    应用程序进程启动过程 与 应用程序启动过程 是两个不同的概念,本文简单的记录进程的启动过程

    要想启动一个应用程序,首先要保证这个应用程序所需要的应用程序进程已经启动。

    Zygote的Java框架层中会创建一个Server端的Socket,这个Socket用来等待AMS请求Zygote来创建新的应用程序进程。

    Zygote进程通过fock自身创建应用程序进程,这样应用程序进程就会获得Zygote进程在启动时创建的虚拟机实例。

    在应用程序进程创建过程中除了获取虚拟机实例外,还创建了Binder线程池和消息循环,

    这样运行在应用进程中的应用程序就可以方便地使用Binder进行进程间通信以及处理消息了。

    AMS发送启动应用程序进程请求

    AMS会通过调用startProcessLocked方法向Zygote进程发送请求

    Zygote接收请求并创建应用程序进程

    ZygoteInit类的zygoteInit方法创建Binder线程池

    将当前线程注册到Binder驱动程序中,这样我们创建的线程就加入了Binder线程池中,新创建的应用程序进程就支持Binder进程间通信了,我们只需要创建当前进程的Binder对象,并将它注册到ServiceManager中就可以实现Binder进程间通信,而不必关心进程间是如何通过Binder进行通信的。

    RuntimeInit的invokeStaticMain方法创建消息循环(Looper)

    系统在应用程序进程启动完成后,就会创建一个消息循环,

    这样运行在应用程序进程中的应用程序可以方便地使用消息处理机制(Handler)。

  • 相关阅读:
    2009年度最佳jQuery插件
    转:Jeff Dean的Stanford演讲
    Zookeeper的RPC框架
    转:电商推荐技术
    NoSQL设计思想(从辅到主)
    工作一年小结
    转:MySQL索引背后的数据结构
    java多线程并发,java的几种状态
    转发:Linux Socket编程
    几个linux shell的讲解网站
  • 原文地址:https://www.cnblogs.com/lukelmouse/p/14517364.html
Copyright © 2020-2023  润新知