美文网首页
深入理解Android:SystemServer进程的作用

深入理解Android:SystemServer进程的作用

作者: 过期的薯条 | 来源:发表于2018-02-06 10:35 被阅读89次

    1.引言

    看了一段时间关于SystemServer进程的博客,有点小理解,写一篇关于SystemServer的小笔记,然后走一遍过程。

    2.正题

    ZygoteInit通过startSystemServer方法fork了一个SS进程。这个进程有啥作用呢。


    image.png

    handlerSystemServerProcess()方法只要是以下三个方法:


    image.png

    其中applicationInit()很有意思很重要。该方法中有一个,invokeStaticMain方法通过反射调用main方法:

    image.png
    返回一个异常,这个异常被ZygoteInit的 捕捉到了,进而执行run方法 image.png

    run方法最终通过反射调用SystemServer的main方法,作用是:
    通过以上分析其实main方法的主要作用是:
    1、调整系统时间
    2、设置属性persist.sys.dalvik.vm.lib.2的值为当前虚拟机的运行库路径
    3、装载libandroid_servers.so库,初始化native层service
    4、初始化系统Context
    5、创建SystemServiceManager对象
    6、调用startBootstrapServices(),startCoreServices(),startOtherServices()启动所有的Java服务


    image.png

    另外也可以看到为什么说handler默认是主线程,以及android 应用本身就是基于handler/Looper/Message的
    startBootstrapServices():启动java层的各种服务。framwork层的服务。例如AMS

    image.png

    startCoreServices:启动核心服务:


    image.png

    startOtherServices也与上面一样启动各种服务。

    总结下:SystemServer进程最终会执行到SystemServer类中的main方法中,初始化各种服务器,其中第一个初始化的就是ActivityManagerService。当我们点击启动app的时候。Zygote会对这个消息进行处理,最终执行到applicationInit。那么是在哪里调用方法启动应用的呢?

    相关文章

      网友评论

          本文标题:深入理解Android:SystemServer进程的作用

          本文链接:https://www.haomeiwen.com/subject/lffpzxtx.html