Android最全Android进阶解密读书笔记4——第2章总结,2024年最新flutter页面跳转ios不流畅

总结

学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!

最后如何才能让我们在面试中对答如流呢?

答案当然是平时在工作或者学习中多提升自身实力的啦,那如何才能正确的学习,有方向的学习呢?有没有免费资料可以借鉴?为此我整理了一份Android学习资料路线:

这里是一部分我工作以来以及参与过的大大小小的面试收集总结出来的一套BAT大厂面试资料专题包,主要还是希望大家在如今大环境不好的情况下面试能够顺利一点,希望可以帮助到大家。

好了,今天的分享就到这里,如果你对在面试中遇到的问题,或者刚毕业及工作几年迷茫不知道该如何准备面试并突破现状提升自己,对于自己的未来还不够了解不知道给如何规划。来看看同行们都是如何突破现状,怎么学习的,来吸收他们的面试以及工作经验完善自己的之后的面试计划及职业规划。

最后,祝愿即将跳槽和已经开始求职的大家都能找到一份好的工作!

这些只是整理出来的部分面试题,后续会持续更新,希望通过这些高级面试题能够降低面试Android岗位的门槛,让更多的Android工程师理解Android系统,掌握Android系统。喜欢的话麻烦点击一个喜欢再关注一下~

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

引导程序 BootLoader 是在 Android 操作系统开始运行前的一个小程序,它的主要作用是把系统 OS 拉起来并运行。

3、Linux 内核启动

当内核启动时,设置缓存、被保护存储器、计划列表、加载驱动。在内核完成系统设置后,它首先在系统文件中寻找 init.rc 文件,井启动 init 进程。

4、init 进程启动

init 进程做的工作比较多 ,主要用来初始化和启动属性服务,也用来启动 Zygote 进程。

从上面的步骤可以看出, 当我们按下启动电源时,系统启动后会加载引导程序, 引导程序又启动 Linux 内核,在 Linux 内核加载完成后,第一件事就是要启动 init 进程。

2.1.7、init进程启动总结


init 进程启动做了很多的工作,总的来说主要做了以下三件事:

  1. 创建和挂载启动所需的文件目 录。

  2. 初始化和启动属性服务。

  3. 解析 init.rc 配置文件并启动 Zygote 进程。

2.2、Zygote进程启动过程

================

在 上一小节节中我们学习了 init 进程启动过程,在启动过程中主要做了三件事,其中一件就是创建了 Zygote 进程,本节接着学习 Zygote 进程启动过程, 首先我们要了解 Zygote 是什么。

2.2.1、Zygote概述


在 Android 系统中, DVM (Dalvik 虚拟机)和 ART 、 应用程序进程以及运行系统的关键服务的 SystemServer 进程都是由 Zygote 进程来创建的,我们也将它称为孵化器。

2.2.4、Zygote进程启动总结


Zygote 进程启动共做了如下几件事 :

  1. 创建 AppRuntime 并调用其 start 方法,启动 Zygote 进程。

  2. 创建 Java 虚拟机并为 Java 虚拟机注册 JNI 方法 。

  3. 通过JNI调用 Zygotelnit 的 main 函数进入 Zygote 的 Java 框架层。

  4. 通过 registerZygoteSocket 方法创建服务器端 Socket ,并通过 runSelectLoop 方法等待 AMS 的请求来创建新的应用程序进程。

  5. 启动 SystemServer 进程。

2.3、SystemServer 处理过程

=====================

SystemServer 进程主要用于创建系统服务,我们熟知的 AMS 、 WMS 和 PMS 都是由它来创建的。

2.3.3、SystemServer 进程总结


SystemServer 进程被创建后,主要做了如下工作:

  • 1 启动 Binder 线程池,这样就可以与其他进程进行通信 。

  • 2 创建 SystemServiceManager ,其用于对系统的服务进行创建、启动和生命周期管理。

  • 3 启动各种系统服务。

2.4、Launcher 启动过程

=================

此前已经学习了 Android 系统启动流程的 init 进程、 Zygote 进程和 SystemServer 进程,最后我们来学习 Launcher 的启动过程。

2.4.1、Launcher 概述


系统启动的最后一步是启动一个应用程序用来显示系统中已经安装的应用程序,这个应用程序就叫作 Launcher 。Launcher 在启动过程中会请求 PackageManagerService 返回系统中已经安装的应用程序的信息,并将这些信息封装成一个快捷图标列表显示在系统屏幕上,这样用户可以通过点击这些快捷图标来启动相应的应用程序。

通俗来讲 Launcher 就是 Andro id 系统的桌面,它的作用主要有以下两点:

  • (1)作为 Android 系统的启动器,用于启动应用程序 。

  • (2)作为 Android 系统的桌面,用于显示和管理应用程序的快捷图标或者其他桌面组件。

2.5、Android 系统启动流程

==================

结合本章前 4 节的内容,我们可以清晰地总结出 Android 系统启动流程,这个流程主要有以下几个部分。

1、启动电源以及系统启动


当电源按下时引导芯片代码从预定义的地方(固化在 ROM )开始执行。加载引导程序BootLoader 到 RAM ,然后执行。

2、引导程序 Bootloader


引导程序 BootLoader 是在 Android 操作系统开始运行前的一个小程序,它的主要作用是把系统 OS 拉起来并运行。

3、Linux 内核启动


当内核启动时 ,设置缓存、被保护存储器、计划列表、加载驱动。当内核完成系统设置时,它首先在系统文件中寻找 init.rc 文件,并启动 init 进程 。

4、init 进程启动


初始化和启动属性服务,井且启动 Zygote 进程。

5、Zygote 进程启动


创 建 Java 虚拟机井为 Java 虚拟机注册 JNI 方告,创建服务器端 Socket ,启动SystemServer 进程。

6、SystemServer 进程启动


启动 B inder 线程池和 SystemServiceManager,并且启动各种系统服务。

7、Launcher 启动


被 SystemServer 进程启动的 AMS 会启动 Launcher, Launcher 启动后会将己安装应用的快捷图标显示到界面上。

结合上面的流程,给出 Android 系统启动流程图 ,如图 2-4 所示 。

【附】相关架构及资料

源码、笔记、视频。高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter全方面的Android进阶实践技术,和技术大牛一起讨论交流解决问题。

image

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

mg-iQlHwlB3-1715229114856)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值