`
月下独酌
  • 浏览: 130832 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

[CSDN]Android应用程序进程启动过程的源代码分析

 
阅读更多
http://blog.csdn.net/luoshengyang/article/details/6747696

简要整理:

ActivityManagerService.java.startProcessLocked()(此方法本身在运行在SystemService进程中)
      |
Process.java.start()
      |
    通过localSocket发生命令(参数"android.app.ActivityThread") 至native的Zygote进程(Zygote进程中ZygoteInit.java.runSelectLoopMode()无限循环侦听socket请求)
      |
    收到请求后得到一个socket连接ZygoteConnection.java对象,并执行此对象的runOnce方法
      |
    fork()一个子进程,至此,新的应用程序进程诞生,不过后面还有很多初始话的工作要做
      |
    RuntimeInit.java.zygoteInit()
      |
    {RuntimeInit.java.zygoteInitNative(),                    RuntimeInit.java.invokeStaticMain()}
      |                                                         |
    AndroidRuntime.cpp.onZygoteInit()                         先通过异常清理堆栈
      |                                                         |
    app_main.cpp.AppRuntime.onZygoteInit()                    ZygoteInit.java.main()捕获异常,反射android.app.ActivityThread.main()
      |                                                         |
    ProcessState.cpp.startThreadPool()                        ActivityThread.java.main()消息循环(等待启动Activity或者Service了)
      |
    ProcessState.cpp.spawnPooledThread()
      |
    ProcessState.cpp.PoolThread.threadLoop()
      |
    IPCThreadState.cpp.joinThreadPool()#此处为无限循环
      |
    IPCThreadState.cpp.talkWithDriver()#与Binder驱动程序交互

分享到:
评论

相关推荐

    罗升阳-Android系统源代码情景分析

    Android系统源代码是一个庞大的开源项目,包含了操作系统、运行时环境、应用程序框架以及各种应用程序。罗升阳在书中详细剖析了这些组成部分,让读者了解它们如何协同工作,以实现Android设备的功能。他首先从...

    android 11源码中如何提高应用oom_adj级别,保活应用(csdn)————程序.pdf

    在Android 11源码中,提高应用的`oom_adj`级别是为了确保应用程序在系统内存紧张时能够保持活跃,防止被系统强制关闭。`oom_adj`(Out-of-Memory Adjuster)是Android用来管理进程优先级和内存分配的一个关键参数。...

    Android高级编程--源代码

    该资料是《Android高级编程》的源代码 对应的书籍资料见: Android高级编程 基本信息 原书名: Professional Android Application Development 原出版社: Wrox 作者: (英)Reto Meier 译者: 王鹏杰 霍建同 出版社...

    Android程序设计基础

     读者可以在自己的应用程序中随意使用源代码。  关于“快速阅读指南”  虽然大多数作者都希望读者阅读他们书中的每一句话,但我知道你可能不想这样做。你只希望阅读能够解决手头问题的部分,而在需要解决其他...

    Android-androidframework层源码解析

    要深入理解Android Framework,你需要熟悉Android开放源代码项目(AOSP)的构建过程。`build.gradle`文件、`Android.mk`以及`build-system`目录下的源码提供了构建Android系统所需的所有信息。 通过以上分析,我们...

    Android的设计与实现 卷1 (带目录)

    “Android的设计与实现”系列丛书主要围绕Android系统的四层结构展开,通过源代码来...Activity Manager篇(第10~12章)深入阐述了ActivityManagerService的运行机制、应用程序和进程的启动流程,以及进程管理机制。

    Android8.1启动流程.docx

    - 下载源代码,包括Android源码以及相关的应用程序和库。 - 使用`syncbuild.sh`脚本同步代码,但需要注释掉编译部分,以便上传到SVN版本控制系统。需要注意的是,由于文件名大小写问题和软链接的存在,代码必须在...

    《深入理解Android:卷I》试读本

    《深入理解Android:卷I》是一本以情景方式对Android的源代码进行深入分析的书。内容广泛,以对Framework层的分析为主,兼顾Native层和Application层;分析深入,每一部分源代码的分析都力求透彻;针对性强,注重实际...

    深入理解Android:卷I--详细书签版

     邓凡平,资深Android开发工程师,热衷于Android源代码的研究,对Android的架构设计和实现原理有非常深刻的认识和理解,应用开发经验也十分丰富。目前就职于国内一家领先的 Android企业,负责Framework的开发和...

    基于android系统的日程管理应用

    【基于Android系统的日程管理应用】是一个专为Android平台设计的应用程序,旨在帮助用户有效管理和组织他们的日常事务。这个应用的核心功能包括数据库操作(增删改查)、闹钟提醒以及时间设置控件的使用,提供了丰富...

    Mi_Notes.zip

    5. **系统启动流程**:从Zygote进程的孵化,到SystemServer的初始化,再到第一个Activity的启动,这一系列步骤揭示了Android设备如何从开机到运行应用。 6. **权限管理系统**:Android的权限模型是保障用户隐私和...

    fdbus编译代码(涉及protobuf编译)-总结

    fdbus是一款用于跨平台进程间通信(IPC)的轻量级框架,支持多种操作系统如Linux、Android等,并且集成了protobuf作为数据序列化工具。 #### 二、protobuf编译流程 **1. 下载protobuf源码** - 从官方GitHub仓库...

    Test_Map.zip

    它可能包含了各种模块的源代码,例如Activity、Service、BroadcastReceiver、ContentProvider等Android应用的基础组件,以及Adapter、Fragment等高级特性的实现。通过研究这些代码,我们可以了解到Android应用程序的...

    对多种方式实现进程保护的研究

    2. **AlarmManager**:标签中的“后台闹钟”可能指的是Android的`AlarmManager`服务,它允许应用程序安排在未来某个时间执行任务。即使应用进程被杀死,AlarmManager仍然可以在指定时间唤醒应用,重新启动相关服务,...

    DroidPlugin 宿主Demo

    文件列表中提到的"DroidPlugin"可能是源代码文件或者项目的根目录,包含了实现插件化功能的所有代码和资源。在这些文件中,你可以找到如`DroidPluginManager`这样的核心类,它们负责管理和控制插件的生命周期。同时...

    简单计时器

    在IT领域,计时器是编程中的一个关键概念,它广泛应用于各种软件开发中,包括游戏、应用程序、服务器性能监控以及自动化测试等场景。下面将详细讨论计时器的工作原理、类型以及如何在不同编程语言中实现计时器。 ...

    delphi cmd 管道

    标签中的"delphi"指的是Delphi编程语言,它是Object Pascal的一种现代实现,用于开发Windows、macOS、Linux和Android平台的应用程序。"cmd"是Windows操作系统中的命令提示符,用于执行DOS命令。"管道"(pipe)是操作...

    chrome.exe

    本软件的程式码是基于其他开放源代码软件所撰写,包括WebKit和Mozilla,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。软件的名称是来自于又称作“Chrome”的网络浏览器图形使用者界面(GUI)...

    《Linux内核修炼之道》精华版之方法论

    强调了理解内核配置和编译流程的重要性,以及掌握内核源代码分析方法的必要性。 - **驱动开发的方法论**:对于希望从事驱动开发工作的读者来说,这部分内容非常宝贵。它指导读者如何阅读规格说明书(Specification)、...

Global site tag (gtag.js) - Google Analytics