zoukankan      html  css  js  c++  java
  • Android应用程序进程启动过程(后篇)

    前言

    在前篇中我们讲到了Android应用程序进程启动过程,这一篇我们来讲遗留的知识点:在应用程序进程创建过程中会启动Binder线程池以及在应用程序进程启动后会创建消息循环。

    1.Binder线程池启动过程

    我们首先来看RuntimeInit类的zygoteInit函数,如下所示 
    frameworks/base/core/java/com/android/internal/os/RuntimeInit.java

    注释1处会在新创建的应用程序进程中创建Binder线程池

    2.消息循环创建过程

    frameworks/base/core/java/android/app/ActivityThread.java

     public static void main(String[] args) {
            Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "ActivityThreadMain");
            SamplingProfilerIntegration.start();
    ...
            Looper.prepareMainLooper();//1
            ActivityThread thread = new ActivityThread();//2
            thread.attach(false);
            if (sMainThreadHandler == null) {
                sMainThreadHandler = thread.getHandler();
            }
            if (false) {
                Looper.myLooper().setMessageLogging(new
                        LogPrinter(Log.DEBUG, "ActivityThread"));
            }
            Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
            Looper.loop();//3
            throw new RuntimeException("Main thread loop unexpectedly exited");
        }

    注释1处在当前应用程序进程中创建消息循环,注释2处创建ActivityThread,注释3处调用Looper的loop,使得Looper开始工作,开始处理消息。可以看出,系统在应用程序进程启动完成后,就会创建一个消息循环,用来方便的使用Android的消息处理机制。

  • 相关阅读:
    __dict__
    谷歌浏览器如何清除当前页面的缓存
    博客园插入超链接时如何取消下划线
    杂七杂八
    博客园首页如何添加 Live 2D 模型
    访问 IIS 元数据库失败 的解决方法 .
    VS 关于无法打开项目文件,此安装不支持该项目类型的问题
    汉字转为unicode
    Windchill 预览效果偏向左边
    MD04
  • 原文地址:https://www.cnblogs.com/ganchuanpu/p/6218627.html
Copyright © 2011-2022 走看看