android actviity模糊,Framework启动过程浅析
浅显的总结一下Framework启动大概过程
总体
Android底层是linux系统,因而在开机时仍然是运行天字第一号进程inti,读取init.rc来创建第一个Dalvik进程zygote,下面是个Framework启动的整体图
1 、Init进程
Linux系统天字第一号进程,在我们眼中吊的飞起的Android系统在LInux中只不过是一个linux的一个应用程序而已,就通过启动一个用户级程序init的方式,完成引导进程。init始终是第一个进程.需要读取一下配置文件
Init.rc
Init.marvell.rc
然后进入创建zygote(受精卵)
2、zygote
第一个Dalvik虚拟机程序Zygote(受精卵),接下来所有的Dalvik虚拟机进程都是由它孵化出来,他创建时主要做了2件事
(1)Socket服务端:接受启动新的Dalvik进程的命令
(2)Framework共享类及共享资源:zygote进程启动后会装载一些共享的类和资源,这样新的Dalvik进程就不需要再次装载
然后就开始孵化第一个Dalvik进程SystemSever
在zygote启动中时,为了便于理解将其总结为5个部分
3、SystemSever
Android的所有服务循环框架都是建立SystemServer@(SystemServer.java)上。在SystemServer.java中看不到循环结构,只是可以看到建立了init2的实现函数,建立了一大堆服务,并AddService到service Manager。其中最重要的服务当属ActivityManagerSever(Ams),实在systemReady()调用后启动的,主要跟管理Activity启动相关,总结如下
4、启动Activity
AMS构造Activity对象放入mMainStack队列,则第一个运行的Actviity就是该Activity
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/xsf50717/article/details/47167989
android actviity模糊,Framework启动过程浅析相关推荐
- Framework启动过程浅析
浅显的总结一下Framework启动大概过程 总体 Android底层是linux系统,因而在开机时仍然是运行天字第一号进程inti,读取init.rc来创建第一个Dalvik进程zygote,下面是 ...
- Android 系统服务 - PMS 的启动过程
相关文章链接: 1. Android Framework - 学习启动篇 2. Android 系统服务 - PMS 的启动过程 相关源码文件: frameworks/base/services/co ...
- 从源码角度看Android系统SystemServer进程启动过程
SystemServer进程是由Zygote进程fork生成,进程名为system_server,主要用于创建系统服务. 备注:本文将结合Android8.0的源码看SystemServer进程的启动 ...
- 从源码角度看Android系统Zygote进程启动过程
在Android系统中,DVM.ART.应用程序进程和SystemServer进程都是由Zygote进程创建的,因此Zygote又称为"孵化器".它是通过fork的形式来创建应用程 ...
- Android应用程序进程启动过程的源代码分析(1)
Android应用程序框架层创建的应用程序进程具有两个特点,一是进程的入口函数是ActivityThread.main,二是进程天然支持Binder进程间通信机制:这两个特点都是在进程的初始化过程中实 ...
- Android应用程序进程启动过程
相关文章 Android系统架构与系统源码目录 Android系统启动流程(一)解析init进程启动过程 Android系统启动流程(二)解析Zygote进程启动过程 Android系统启动流程(三) ...
- 从源码角度看Android系统init进程启动过程
init进程是Linux系统中用户空间的第一个进程,进程号为1.Kernel启动后,在用户空间启动init进程,并调用/system/core/init.cpp中的main方法执行一些重要的工作. 备 ...
- Flutter——在Android平台上的启动流程浅析
介绍 Flutter应用是由平台来创建.初始化并启动的,这里我们以android为例,对启动过程做一个走马观花式的了解,旨在对平台端的工作有个大致了解. Android端的启动流程 启动流程实际上还涉 ...
- Android 系统服务管家servicemanager启动过程详解
Android考虑到移动设备耗电以及跨进程通信效率等因素,基于OpenBinder专门为进程通信开发了一套框架:binder.例如,客户端程序需要获取WindowManager,TelephonyMa ...
最新文章
- 论坛社区做推广要精心的策划
- 3 个相见恨晚的 Google Colaboratory 奇技淫巧!
- 小程序获取input 的value_[小发现] 现在可以获取任意小程序的小程序码了!
- power(乘幂)函数剖析
- LeetCode 582. 杀死进程(图的遍历)
- Windows via C/C++ 学习(8)CreateProcess 函数
- Spark-SQL与hive整合【版本spark1.6.0+hive0.14】--Standalone模式
- c语言程序求对称矩阵,C语言经典算法上三角下三角对称矩阵
- 详细全面 :一份完整的数据分析师成长书单
- python3d动画控制_3D旋转玫瑰花:python-matplotlib实现
- 内测小程序 今日头条的超级APP梦能顺利实现吗?
- 如何解决浏览器的兼容性
- UEFI 中的Gmac网卡驱动实现
- 云原生|Qunar 云原生容器化落地实践
- SpringBoot(二)Error resolving template “xxx”, template might not exist or might not be accessible解决办法
- DSO(dsoframer)的接口文档在VC++使用
- 为啥叫四川?是有四条河吗?
- 在发送邮件的时候出现《命令顺序不正确。 服务器响应为:Error: need EHLO and AUTH first !》解决方案
- java基于微信小程序的在线考试系统 uniapp 小程序
- 达人评测 R55600G对比R74750G选哪个好
热门文章
- 基于Xml 的IOC 容器-载入配置路径
- 模块化操作(es6写法)
- 字符输出流_Writer类FileWriter类介绍
- 访问数组元素进行获取
- API Gateway简介
- jvm_垃圾收集算法讲解(二)
- SpringBoot(配置druid数据源、配置MyBatis、事务控制、druid 监控)
- oracle最大空闲时间,使用Oracle PROFILE控制会话空闲时间
- list lt t gt java_将DataTable转换成Listlt;Tgt;实现思路及示例代码
- 怎样利用超图客户端打点_QuickFix Java 讲解(三)客户端的搭建与解析