Android技术20:Android的初始化流程

Android系统是如何启动的呢,应用程序是如何启动。下面简要介绍下初始化流程。

1.Android系统的初始化

1.1Android系统会首先启动Linux基础系统,然后引导加载Linux内核并启动初始化进程Init

Linux Kernel---->Init(pid=1)

1.2启动守护进程Daemons

启动Usb守护进程,管理USB连接

启动Android Debug Bridge守护进程管理ADB连接

启动Debuggerd Debug守护进程

启动无线接口守护进程管理无线通信

1.3启动守护进程的同时,会启动Zygote进程

创建初始化Dalvik初始化实例

加载socket请求的需要的类和监听

创建虚拟机实例来管理应用程序的进程

|  Daemons

init----

|  Zygote

1.4接下来,初始化Runtime进程

初始化服务管理器Service Manager

注册服务管理器,以它作为默认的Binder服务Context管理器

1.5启动系统服务System Service

Runtime向Zygote发送一个请求,Zygote为系统服务创建一个Dalvik虚拟机实例,并启动系统服务,系统服务将启动原生系统服务,主要包括Audio Flinger和Surface Flinger,这些本地系统服务将注册到服务管理器。系统服务将启动Android管理服务,将管理服务都被注册到服务管理器上。

1.6系统加载完成,等待应用程序启动

1.7Activity Manager管理器向Zygote发出一个Socket请求,Zygote通过fork机制创建一个Dalvik虚拟机进程,来运行应用程序

所有的应用程序进程都是Zygote进程的子进程,每一个应用程序一个进程一个虚拟机。

Android技术20:Android的初始化流程,布布扣,bubuko.com

时间: 2024-10-10 08:12:54

Android技术20:Android的初始化流程的相关文章

Android 6.0 SIM卡初始化流程

本文主要讲述Android 6.0 SIM卡初始化流程,这个过程也涉及到UICC框架的初始化,UICC(Universal Integrated Circuit Card)的架构图如下: /** * This class is responsible for keeping all knowledge about * Universal Integrated Circuit Card (UICC), also know as SIM's, * in the system. It is also

.Net程序员玩转Android开发---(20)Android绑定服务

绑定服务是在android中局部使用的服务,客户端和服务是在同一进程中工作的,不需要跨进程操作.客户端通过bindService方法与服务创建关联 下面这个例子演示客户端调用服务的获取时间方法 1.创建绑定服务 首先创建服务, 服务中创建一个内部类TimeBinder,继承Binder,通过Onbind回调返回服务实例, 在服务中创建一个获取时间的公共方法,供客户端调用 package com.example.helloword; import java.text.SimpleDateForma

Android技术——在Android中的随意视图中找控件

1.在非常多情况下,我们可能不知道控件的id,可是我们却希望在包括这个控件的视图中找到它,能够採用例如以下做法: 例:在Activity的根视图中找出当中全部的Button控件 private void findButton(ViewGroup group, List<Button> result) { if (group != null) { for (int i = 0, j = group.getChildCount(); i < j; i++) { View child = gr

android webkit 初始化流程

以android 4.2为例 1, android 4.2中 WebViewClassic.java 为 WebView.java的代理类. 2,程序运行后,浏览器首先加载webkit so. WebViewCore.java ,apk 运行后只加载一次. static { // Load libwebcore and libchromium_net during static initialization. // This happens in the zygote process so th

Android技术面试整理

前19题为常考题目!!  1.Android的四大组件是哪些,它们的作用? 2.请介绍下Android中常用的五种布局. 3.android中的动画有哪几类,它们的特点和区别是什么 4.android 中有哪几种解析xml的类?官方推荐哪种?以及它们的原理和区别. 5.ListView的优化方案 6.请介绍下Android的数据存储方式. 7.activity的启动模式有哪些?是什么含义? 8.跟activity和Task 有关的 Intent启动方式有哪些?其含义? 9.请描述下Activit

Android技术18:Android中Adapter类详解

1.Adapter设计模式 Android中adapter接口有很多种实现,例如,ArrayAdapter,BaseAdapter,CursorAdapter,SimpleAdapter,SimpleCursorAdapter等,他们分别对应不同的数据源.例如,ArrayAdater对应List和数组数据源,而CursorAdapter对应Cursor对象(一般从数据库中获取的记录集).这些Adapter都需要getView方法返回当前列表项显示的View对象.当Model发生改变时,会调用Ba

Android技术总结2

Android技术总结2Java部分 Java虚拟机jvm分区,GC(基本上后续所有地方面试都问了,基础中的基础)虚拟机栈 线程私有 描述Java方法执行的内存模型 每个方法在执行的同时都会创建一个栈帧 用于存储局部变量表.操作数栈.动态链接.方法出口等信息每一个方法从调用直至执行完成的过程,就对应一个栈帧在虚拟机栈中入栈道出栈的过程.局部变量表存放了编译期可知的各种基本数据类型 对象引用 returnAddress类型本地方法栈 为虚拟机使用到的Native方法服务堆 线程共享 存放对象实例

Android技术22:Android中AIDL

在Android中进程内部通过全局变量,文件,preference,数据库作为数据的载体实现数据共享和通信.然后在进程之间则需要借助Binder实现IPC调用.Android进程通信框架:服务端,客户端,Linux binder驱动.Binder驱动成为连接两端的桥梁.我们首先通过aidl语言实现一个简单的多进程通信.具体实现步骤如下: 1.定义aidl文件 IService.aidl,定义一个接口,test() ,不包含负责的类和数据. 1 package com.demo.ipc; 2 3

Android技术21:Android异步消息处理线程

Android异步消息处理线程,该线程一直处于无限循环之中,每次从Message Queue中读取消息,然后回调消息处理的方法,Handler的HandlerMessage中处理消息.如果消息队列为空,该线程就挂,等待消息队列中有消息进来,就唤醒线程. 1.Android异步线程内部结构 在线程内部有一个或者多个Handler对象,外部程序通过Handler对象向线程发送异步消息,消息经过Handler传递到Message Queue对象中,每个线程内部只包含一个一个消息队列对象,线程主执行函数