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 11源码中,提高应用的`oom_adj`级别是为了确保应用程序在系统内存紧张时能够保持活跃,防止被系统强制关闭。`oom_adj`(Out-of-Memory Adjuster)是Android用来管理进程优先级和内存分配的一个关键参数。...
该资料是《Android高级编程》的源代码 对应的书籍资料见: Android高级编程 基本信息 原书名: Professional Android Application Development 原出版社: Wrox 作者: (英)Reto Meier 译者: 王鹏杰 霍建同 出版社...
读者可以在自己的应用程序中随意使用源代码。 关于“快速阅读指南” 虽然大多数作者都希望读者阅读他们书中的每一句话,但我知道你可能不想这样做。你只希望阅读能够解决手头问题的部分,而在需要解决其他...
要深入理解Android Framework,你需要熟悉Android开放源代码项目(AOSP)的构建过程。`build.gradle`文件、`Android.mk`以及`build-system`目录下的源码提供了构建Android系统所需的所有信息。 通过以上分析,我们...
“Android的设计与实现”系列丛书主要围绕Android系统的四层结构展开,通过源代码来...Activity Manager篇(第10~12章)深入阐述了ActivityManagerService的运行机制、应用程序和进程的启动流程,以及进程管理机制。
- 下载源代码,包括Android源码以及相关的应用程序和库。 - 使用`syncbuild.sh`脚本同步代码,但需要注释掉编译部分,以便上传到SVN版本控制系统。需要注意的是,由于文件名大小写问题和软链接的存在,代码必须在...
《深入理解Android:卷I》是一本以情景方式对Android的源代码进行深入分析的书。内容广泛,以对Framework层的分析为主,兼顾Native层和Application层;分析深入,每一部分源代码的分析都力求透彻;针对性强,注重实际...
邓凡平,资深Android开发工程师,热衷于Android源代码的研究,对Android的架构设计和实现原理有非常深刻的认识和理解,应用开发经验也十分丰富。目前就职于国内一家领先的 Android企业,负责Framework的开发和...
【基于Android系统的日程管理应用】是一个专为Android平台设计的应用程序,旨在帮助用户有效管理和组织他们的日常事务。这个应用的核心功能包括数据库操作(增删改查)、闹钟提醒以及时间设置控件的使用,提供了丰富...
5. **系统启动流程**:从Zygote进程的孵化,到SystemServer的初始化,再到第一个Activity的启动,这一系列步骤揭示了Android设备如何从开机到运行应用。 6. **权限管理系统**:Android的权限模型是保障用户隐私和...
fdbus是一款用于跨平台进程间通信(IPC)的轻量级框架,支持多种操作系统如Linux、Android等,并且集成了protobuf作为数据序列化工具。 #### 二、protobuf编译流程 **1. 下载protobuf源码** - 从官方GitHub仓库...
它可能包含了各种模块的源代码,例如Activity、Service、BroadcastReceiver、ContentProvider等Android应用的基础组件,以及Adapter、Fragment等高级特性的实现。通过研究这些代码,我们可以了解到Android应用程序的...
2. **AlarmManager**:标签中的“后台闹钟”可能指的是Android的`AlarmManager`服务,它允许应用程序安排在未来某个时间执行任务。即使应用进程被杀死,AlarmManager仍然可以在指定时间唤醒应用,重新启动相关服务,...
文件列表中提到的"DroidPlugin"可能是源代码文件或者项目的根目录,包含了实现插件化功能的所有代码和资源。在这些文件中,你可以找到如`DroidPluginManager`这样的核心类,它们负责管理和控制插件的生命周期。同时...
在IT领域,计时器是编程中的一个关键概念,它广泛应用于各种软件开发中,包括游戏、应用程序、服务器性能监控以及自动化测试等场景。下面将详细讨论计时器的工作原理、类型以及如何在不同编程语言中实现计时器。 ...
标签中的"delphi"指的是Delphi编程语言,它是Object Pascal的一种现代实现,用于开发Windows、macOS、Linux和Android平台的应用程序。"cmd"是Windows操作系统中的命令提示符,用于执行DOS命令。"管道"(pipe)是操作...
本软件的程式码是基于其他开放源代码软件所撰写,包括WebKit和Mozilla,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。软件的名称是来自于又称作“Chrome”的网络浏览器图形使用者界面(GUI)...
强调了理解内核配置和编译流程的重要性,以及掌握内核源代码分析方法的必要性。 - **驱动开发的方法论**:对于希望从事驱动开发工作的读者来说,这部分内容非常宝贵。它指导读者如何阅读规格说明书(Specification)、...