Android 从按下开机键到 App 启动发生了什么?

在面试的时候,经常会被问到这些问题:

  • 对Activity的启动流程了解吗?

  • AMS在Android起到什么作用,简单分析下Android的源码

  • system_server为什么要在Zygote中启动,而不是由init直接启动呢?

  • 为什么要专门使用Zygote进程去孵化应用进程,而不是让system_server去孵化呢?

  • 能说说具体是怎么导致死锁的吗?

  • Zygote为什么不采用Binder机制进行IPC通信?

每当这时候,内心真是一万只草泥马奔腾而过……

大部分Android开发者一遇到这种面试题就直接懵逼了,不少人不是没有看过相关的解答,但也都只是浅尝辄止,没有深入掌握其中原理,面试的时候自然会被问个措手不及。

下面这张图想必大家都看过,Google官方提供过一张经典的四层架构图,从下往上依次分为:Linux内核、系统库和Android运行时环境、框架层、应用层,其中每一层都包含大量的子模块或子系统。

Android系统启动过程就是从下往上的一个过程:

Loader → Kernel → Native → Framework → App


其中,AMS(ActivityManagerService)是Android系统中一个特别重要的系统服务,也是与上层APP打交道最多的系统服务之一(几乎所有的APP应用都需要与AMS打交道)。AMS与操作系统中的进程管理和调度模块很像,除了在Android系统中非常重要之外,它涉及到的知识点也非常多。想要了解Android的内部工作机制,就必须先了解AMS的工作原理。

AMS贯穿了Android系统组件的核心服务,主要负责Android系统中四大组件的启动、切换、调度以及应用进程管理和调度工作。

比如在Activity的启动流程中,AMS就是组件管理调度中心,什么都不干,但什么都管!Android系统从开机到桌面,再到APP启动的完整流程,AMS无所不在……

当我们深刻了解Android启动流程与AMS特性之后,就可以解决项目开发中的很多问题,比如:

屏幕适配、自定义View和ViewGroup、APK加固、热修复、组件化路由、皮肤换肤、插件化、leakCanary内存问题分析、Hilt注入、Jetpack原理、Glide原理、RXJava原理、launchModel、权限验证、四大组件等相关逻辑和代码……

但AMS本身比较复杂、难以理解,许多工作多年的Android开发者也很难弄清AMS的作用。

为了帮助大家更快更好的学习Android系统运行流程与AMS源码,我特别邀请到了曾任职于东芝,东方集团,阿里等知名公司的架构师Jett为大家带来《Android系统运行流程与AMS源码实战》系列直播分享。帮助大家深刻理解Android系统运行流程与AMS特性,掌握其中原理,带你解决日常项目开发过程中的各种问题。

原价298元《Android系统运行流程与AMS源码实战》训练营,现在限时优惠只需要0.1元即可加入学习(限量100个名额

大家手速要快,赶紧识别下方图中二维码加入学习!

报名学习后还将附赠一套系统的开发进阶资料,帮助大家在技术的道路上更进一步。


赶紧扫码报名获取资料,开启你的学习之旅

扫码添加时记得备注:"AMS"快速通过)

【如遇扫码频繁+VX:sjsgyb6】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值