`
weiqingfei
  • 浏览: 317082 次
  • 性别: Icon_minigender_1
  • 来自: 黑洞
社区版块
存档分类
最新评论

简单描述应用的启动过程

阅读更多

1.android系统启动第一个进程是init。

 

2.init会fork出一个叫zygote的进程。(所有的应用进程都是由zygote fork出来的)

   zygote进程实际上是个jvm上的进程,启动jvm,打开监听端口(registerZygoteSocket),预加载类和资源。

 

3.zygote启动过程中,会fork一个system_server,因为是完全复制的zygote,所以需要关闭运行到现在为止的一些东西,比如监听端口。

 

4.system_server里面会启动ActivityManagerService等服务,来监听创建activity的请求。

 

5.ActivityManagerService收到需要启动activity的请求时,先看看有没有相对应的已经注册过的进程,如果没有,通知zygote,让它fork一个进程,然后注册。如果有,直接发消息通知进程启动activity。

 

为什么要这么费劲呢?主要是快,android上都是java程序,每个进程都是一个jvm,启动时要初始化加载很多类,而且这部分都是重复的,重新创建当然没有复制来的快,另外linux上的fork遵循copy-on-write,所以还是可以共享父进程很多资源地。

分享到:
评论

相关推荐

    ARM处理器启动过程详述

    在ARM处理器启动过程中,映像文件通过在指定地址加载执行,开始系统的初始化和应用程序的启动。 总的来说,ARM处理器的启动过程涵盖了硬件初始化、内存映射配置、异常向量设置、映像文件加载执行等多个关键步骤。...

    获取Android所有应用程序列表,点击某一项时可启动相应应用

    通过以上步骤,你就可以实现标题和描述中所述的功能:获取Android所有应用程序列表,并实现点击列表项启动相应应用。 以上就是关于“获取Android所有应用程序列表,点击某一项时可启动相应应用”的详细知识点,涵盖...

    VxWorks启动过程描述及主要宏开关含义

    ### VxWorks启动过程描述及主要宏开关含义 #### 一、三种不同的VxWorks映象比较 在探讨VxWorks的启动过程之前,我们首先需要了解三种不同类型的VxWorks映像及其特点: 1. **可加载的VxWorks映象**:这种映像通常...

    windows服务启动另外一个应用程序

    4. 用户界面代理进程:编写一个简单的应用程序,它在用户会话中运行,接收服务发送的指令,然后启动GUI程序。 在实现过程中,还需要考虑错误处理、权限控制、资源管理等多个方面,确保服务的稳定性和安全性。同时,...

    windows11 win11免登陆自动启动应用程序/软件

    这种方法简单易行,但对于需要在用户登录后才执行的应用程序来说并不适用。此外,这种方法也意味着每次系统重启后,都需要等待用户登录才能激活这些应用程序,从而延长了服务恢复的时间。 #### 使用任务计划程序...

    自己开发的简单桌面应用

    描述中的“自己开发的简单桌面应用v”可能意味着这是应用的一个版本,暗示着它可能经过了若干次迭代和改进。"v"可能是版本号的缩写,比如v1.0代表第一版,v2.0则表示第二版。这表明开发者正在逐步完善这个应用,以...

    通过输入数字 启动应用

    过于繁琐的密码启动过程可能会让用户感到不便,而过于简单的则可能降低安全性。因此,合理的设计应当考虑用户的操作习惯和安全需求。 8. **文件"密码启动应用"**:这个文件可能是实现这一功能的源代码、配置文件或...

    简单的例子包括的应用

    例如,描述中提到的"一个应用就是一个可独立于开发环境运行的插件",这意味着应用程序可以脱离其创建和调试的环境独立运行,用户只需点击启动即可使用,无需关心其背后的开发过程。 RCP(Rich Client Platform)是...

    应用笔记AN2606-STM32单片机系统内存启动方式

    这部分ROM由ST(意法半导体)在生产过程中预先编程完成,其主要功能是通过支持的串行接口将应用程序下载到单片机的内部Flash中。这样的设计不仅简化了固件升级过程,还为开发者提供了灵活的调试手段。 #### 支持的...

    app隐藏图标通过其他的app点击启动.rar

    标题和描述提及的"app隐藏图标通过其他的app点击启动"技术,是利用Android的Intent机制,让一个隐藏图标的App在另一个可见App的触发下运行。这种方式可以使得用户在主屏幕上看不到特定的应用图标,但依然可以通过...

    简单JAVA线程池应用---服务器端

    服务器启动后,会启动10个子线程运行.(配合客户端10个请求进行模拟,控制台输出模拟过程) 服务器主程序进入一个有条件循环: 在sql_Manipulator类中把相关参数修改,可以连接到数据库(前提是配置在数据库配置一个...

    软件延迟启动器

    1. **用户界面友好**:描述中的“方便,简单”表明该软件设计简洁,易于理解和操作。用户可以直观地看到所有可配置的启动项,并轻松设置延迟时间。 2. **安全可靠**:作为“绿色无毒”的软件,意味着它不含恶意代码...

    易启动-启动盘制作软件内含注册码

    易启动在这方面的应用,使得系统封装过程更加便捷,通过创建的启动盘,用户可以快速恢复或安装封装好的系统。 "工光盘启动制作"是指制作含有操作系统或救援工具的光盘,以便在没有硬盘启动或者系统崩溃的情况下,...

    手动Y-△降压启动控制线路

    手动Y-△降压启动控制线路是一种工业控制线路,它主要应用于三相异步电动机的启动过程,尤其是在电动机需要较大启动电流的时候。在启动初期,通过Y形(星形)接线方式使得电动机绕组之间的电压降至额定电压的1/√3,...

    仿Eclipse启动画面

    【标题】"仿Eclipse启动画面"涉及到的是Java编程领域中的图形用户界面(GUI)设计,特别是关于模拟知名开发工具Eclipse的启动过程。在Java中,我们可以利用Swing库来创建这种启动画面,它通常包含一个进度条来展示...

    easyBCD 清除 垃圾启动项

    EasyBCD 是一个强大的启动管理器,它允许用户方便地管理和配置计算机的启动过程,包括添加、删除和编辑启动项。在多系统环境下,尤其是经常进行操作系统安装和卸载的用户,可能会遇到启动菜单中遗留的无效启动项,...

    EasyBCD_多重系统启动

    标题中的“EasyBCD_多重系统启动”表明我们要讨论的是如何使用EasyBCD工具来创建一个支持多重启动的系统配置。...通过使用EasyBCD2.2,你可以更加灵活地控制你的多操作系统环境,并确保启动过程的稳定和可靠。

    有动画效果的启动界面

    启动界面(Splash Screen)是应用程序打开时首先显示的屏幕,它通常是应用程序的标志或品牌图像,有时也会包含一些简单的动画。在技术层面上,启动界面的实现涉及对Android系统生命周期的理解,以及如何在适当的时机...

    简单的启动摄像头的程序

    标题中的“简单的启动摄像头的程序”指的是一个利用Visual Fundamental for Windows (VFW)库来实现摄像头功能的应用程序。VFW是微软在早期Windows系统中提供的一种API,它为开发者提供了方便快捷的方式来处理视频...

    Visual Basic+实验+掌握建立、 编辑和运行一个简单的 Visual Basic 应用程序的全过程+常用控件

    3. 建立、编辑和运行一个简单的Visual Basic应用程序的全过程:这是实验的核心部分。首先,创建一个新项目,然后通过设计视图或代码视图添加和修改控件。例如,可以放置文本框、标签和命令按钮等控件,并通过属性...

Global site tag (gtag.js) - Google Analytics