Android------ 面试题收集1

Posted 切切歆语

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android------ 面试题收集1相关的知识,希望对你有一定的参考价值。

1.Activity生命周期

正常情况系,Activity会经历如下几个阶段:

  • onCreate:表示Activity正在被创建。
  • onRestart:表示Activity正在被重新启动。
  • onStart:表示Activity正在被启动,这时已经可见,但没有出现在前台无法进行交互。
  • onResume:表示Activity已经可见,并且处于前台。
  • onPause:表示Activity正在停止(可做一次保存状态停止动画等非耗时操作)。
  • onStop:表示Activity即将停止(可进行重量级回收工作)。
  • onDestroy:表示Activity即将被销毁。

 

对于生命周期,通常还会问如下的一些问题:

  • 第一次启动:onCreate->onStart->onResume;
  • 打开新的Activity或者返回桌面:onPause->onStop。如果打开新的Activity为透明主题,则不会调用onStop;
  • 当回到原来Activity时:onRestart->onStart->onResume;
  • 当按下返回键:onPause->onStop->onDestroy

2.Activity启动模式

Activity的启动模式有四种:Standard、SingleTop、SingleTask和SingleInstance。

  • Standard:标准模式,也是默认模式。每次启动都会创建一个全新的实例。
  • SingleTop:栈顶复用模式。这种模式下如果Activity位于栈顶,不会新建实例。onNewIntent会被调用,接收新的请求信息,不会再低啊用onCreate和onStart。
  • SingleTask:栈内复用模式。升级版singleTop,如果栈内有实例,则复用,并会将该实例之上的Activity全部清除。
  • SingleInstance:系统会为它创建一个单独的任务栈,并且这个实例独立运行在一个 task中,这个task只有这个实例,不允许有别的Activity 存在(可以理解为手机内只有一个)。


3.Activity启动流程

在理解Activity的启动流程之前,先让我们来看一下android系统启动流程。总的来说,Android系统启动流程的主要经历init进程 -> Zygote进程 –> SystemServer进程 –> 各种系统服务 –> 应用进程等阶段。

  1. 启动电源以及系统启动:当电源按下时引导芯片从预定义的地方(固化在ROM)开始执行,加载引导程序BootLoader到RAM,然后执行。
  2. 引导程序BootLoader:BootLoader是在Android系统开始运行前的一个小程序,主要用于把系统OS拉起来并运行。
  3. Linux内核启动:当内核启动时,设置缓存、被保护存储器、计划列表、加载驱动。当其完成系统设置时,会先在系统文件中寻找init.rc文件,并启动init进程。
  4. init进程启动:初始化和启动属性服务,并且启动Zygote进程。
  5. Zygote进程启动:创建JVM并为其注册JNI方法,创建服务器端Socket,启动SystemServer进程。
  6. SystemServer进程启动:启动Binder线程池和SystemServiceManager,并且启动各种系统服务。
  7. Launcher启动:被SystemServer进程启动的AMS会启动Launcher,Launcher启动后会将已安装应用的快捷图标显示到系统桌面上。

Launcher进程启动后,就会调用Activity的启动了。首先,Launcher会调用ActivityTaskManagerService,然后ActivityTaskManagerService会调用ApplicationThread,然后ApplicationThread再通过ActivityThread启动Activity,完整的分析可以参考Android 之 Activity启动流程


 

以上是关于Android------ 面试题收集1的主要内容,如果未能解决你的问题,请参考以下文章

Android------ 面试题收集1

Android------ 面试题收集1

Android------ 面试题收集1

2021年Android面试题及答案收集(不断更新中)

Java面试题10核心 Java 面试难题,你都会吗?

Android 这 13 道 ContentProvider 面试题,你都会了吗?