Android面试题整理(一)

作者: 程序员丶星霖 | 来源:发表于2017-10-18 18:09 被阅读124次

Android面试题整理(一)

1.Activity和Fragment的生命周期有哪些?

(1)Activity的生命周期主要有onCreate()、onStart()、onResume()、onPause()、onStop()、onDestory()、onRestart()7个生命周期。
  • 当启动Activity时,其生命周期如下图所示:
启动Activity.png
  • 当手机锁屏时,其生命周期如下图所示:
手机锁屏时.png
  • 当手机解锁时,其生命周期如下图所示:
手机解锁时.png
  • 当销毁正在运行的Activity时,其生命周期如下图所示:
销毁Activity.png
  • 当从一个运行的Activity跳转到另一个Activity时(原Activity运行在后台),其生命周期如下图所示:
跳转到新的Activity.png
  • 当finish掉SecondActivity时,后台运行的Activity返回到前台时,其生命周期如下图所示:
finish掉第二个Activity.png
  • 当不设置Activity的android:configChanges时,切横屏时的生命周期如下图所示:
切横屏时.png
  • 当不设置Activity的android:configChanges时,切竖屏时的生命周期如下图所示:
切竖屏时.png
  • 当设置Activity的android:configChanges="orientation"时,切横屏时的生命周期如下图所示(真机测试结果不一样)
设置orientationkeybroadden.png
  • 当设置Activity的android:configChanges="orientation"时,再次切竖屏时的生命周期如下图所示(真机测试结果不一样)
设置orientationkeybroadden.png
  • 当设置Activity的android:configChanges="orientation | keyboardHidden"时,切横屏时的生命周期如下图所示(真机测试结果不一样):
设置orientationkeybroadden.png
  • 当设置Activity的android:configChanges="orientation | keyboardHidden"时,再次切竖屏时的生命周期如下图所示(真机测试结果不一样):
设置orientationkeybroadden.png
  • 当按下手机HOME键时,其生命周期如下图所示:
HOME键.png
(2)Fragment的生命周期有onAttach()、onCreate()、onCreateView()、onActivityCreated()、onStart()、onResume()、onPause()、onStop()、onDestoryView()、onDestory()、onDetach()11个生命周期。
  • 当启动Fragment时,其生命周期如下图所示:
启动Fragment.png
  • 当手机锁屏时,其生命周期如下图所示:
当Fragment手机锁屏时.png
  • 当手机解锁时,其生命周期如下图所示:
fragment手机解锁时.png
  • 当销毁正在运行的Activity时,其生命周期如下图所示:
frgment销毁时.png
  • 当从一个运行的Activity跳转到另一个Activity时(原Activity运行在后台),其生命周期如下图所示:
fragment跳转新页面.png
  • 当finish掉SecondActivity时,后台运行的Activity返回到前台时,其生命周期如下图所示:
重返fragment.png
  • 当按下手机HOME键时,其生命周期如下图所示:
HOME键Fragment.png
(3)Fragment的生命周期与Activity的生命周期是什么样的关系?
  • 其关系如下图所示:
Fragment的生命周期与Activity的生命周期.png

2.Activity的四种启动模式以及使用场景

任务栈是一种后进先出的结构。位于栈顶的Activity处于焦点状态,当按下back按键的时候,栈内的Activity会一个一个的出栈,并且调用其onDestory()方法。如果栈内没有Activity,那么系统就会回收这个栈,,每个APP默认只有一个栈,是以APP的包名来命名的。

  1. standard模式
  • 标准模式,每次启动Activity时都会创建一个新的Activity实例,并且将其压入任务栈栈顶,而不管这个Activity是否已经存在。Activity的启动三回调都会执行(onCreate()、onStart()、onResume())。
  • 使用场景:大多数Activity。
  1. singleTop模式
  • 栈顶复用模式,如果新的Activity已经位于任务栈的栈顶,那么Activity不会被重新创建,所以它的启动三回调不会执行,同时Activity的onNewIntent() 方法会被回调;如果Activity已经存在但是不在栈顶,那么作用和standard模式一样。
  • 使用场景:新闻类或者阅读类APP的内容页面
  1. singleTask模式
  • 栈内复用模式,如果在栈中已经有该Activity的实例,就重用该实例(调用该实例的onNewIntent()方法)。重用时,会让该实例回到栈顶,将它上面的实例移出栈。如果栈中不存在该实例,将会创建新的实例放入栈中。
  • 使用场景:浏览器的主界面(不管从多少个应用启动浏览器,只会启动主界面一次,其余情况都会走onNewIntent(),并且会清空主界面上的其他页面)。
  1. singleInstance模式
  • 加强版的singleTask模式,这种模式的Activity只能单独位于一个任务栈内,由于栈内复用的特性,后续请求均不会创建新的Activity,除非该任务栈被系统销毁了。其效果相当于多个应用共享一个应用,不管谁激活该Activity都会进入同一个应用中。
  • 使用场景:闹铃提醒,将闹铃提醒与闹铃设置分离。

3.onSaveInstanceState()和onRestoreInstanceState()方法、

  1. onSaveInstanceState()的调用时机:
  • 当用户按下HOME键时;
  • 长按HOME键,选择运行其他的程序时;
  • 按下电源按键(关闭屏幕显示)时;
  • 从activity A中启动一个新的Activity B时;
  • 屏幕方向切换时;
  • 调用遵循的原则:当系统存在“未经许可”销毁了我们的Activity的可能时,该方法会被调用。
  1. onRestoreInstanceState()的调用时机:
  • 该方法被调用的前提是,Activity“确实”被系统销毁掉了。

4.Android中的进程优先级?

根据进程的重要性,划分为一下5级:

  1. 前台进程(Foreground process):用户当前操作所必需的进程。通常在任意给定时间前台进程都为数不多。只有在内存不足以支持它们同时继续运行的情况下,系统才会终止它们。
  • 拥有用户正在进行交互的Activity(已调用onResume()方法);
  • 拥有某个Service,绑定到用户正在交互的Activity;
  • 拥有正在“前台”运行的Service(服务已调用startForeground())
  • 拥有正执行一个生命周期回调的Service(onCreate()、onStart()或onDestory())
  • 拥有正执行其onReceive()方法的BroadcastReceiver
  1. 可见进程(Visible process):没有任何前台组件、但仍会影响用户在屏幕上所见内容的进程。可见进程被视为是极其重要的进程,除非为了维持所有前台进程同时运行而必须终止,否则系统不会终止这些进程。
  • 拥有不在前台、但仍对用户可见的Activity(已调用onPause())
  • 拥有绑定到可见Activity的Service
  1. 服务进程(Service process):其中运行着使用startService方法启动的Service,虽然不被用户可见,但是却是用户关心的。当系统需要空间运行前两者进程时才会被终止。
  • 正在运行startService()方法启动的服务,且不属于上述两个更高类别进程的进程
  1. 后台进程(Background process):后台进程对用户体验没有直接影响,系统可能随时终止它们,以回收内存供前台进程、可见进程或服务进程使用。 通常会有很多后台进程在运行,因此它们会保存在 LRU 列表中,以确保包含用户最近查看的 Activity 的进程最后一个被终止。
  • 对用户不可见的Activity的进程(已调用onStop()方法)
  1. 空进程(Empty process):保留这种进程的的唯一目的是用作缓存,以缩短下次在其中运行组件所需的启动时间。 为使总体系统资源在进程缓存和底层内核缓存之间保持平衡,系统往往会终止这些进程。
  • 不含任何应用组件的进程

最近在巩固基础,整理下来,以备不时之需。最后附上个人微信公众号

0.jpg

相关文章

  • 2017 Android 面试题分享整理

    第174期:2017 Android 面试题分享整理 深度讨论 2017 Android 面试题分享整理 (欢迎评...

  • 面试题

    关注的面试题文集 Android面试题整理 Android工程师面试题大全 Android 面试题总结之Andro...

  • Android面试总结二

    参考文章 40个Android面试题Java面试题集Android名企面试题及知识点整理Android面试题收集较...

  • android面试题

    最近在准备android面试,整理了下相关的面试题,分为如下三个部分:android部分、Java部分、算法面试题...

  • Android面试总结

    整理一些常见的Android面试题(针对于2~3年开发经验中所遇到的问题)android阿里面试题锦集(点击查看)...

  • Android面试题知识点整理篇

    前言 秋招在即,急忙将这些Android知识点整理一套面试题籍,希望对大家有所帮助。 Android面试题知识点 ...

  • 面试题

    最全的BAT大厂面试题整理答案Android面试一天一题(Day 37:一套高级工程师的面试题)Android面试...

  • [转]安卓面试题合集

    前几天整理了Java面试题集合,今天再来整理下Android相关的面试题集合.如果你希望能得到最新的消息,可以关注...

  • Android面试题

    Android面试必备: (一)、Java面试题 (二)、Android面试题 (三)、Android高级面试题

  • 面试或者深入学习资源

    极客学院 Android(2017-2018)BAT面试题整理(java篇,含答案) Android学习笔记Git...

网友评论

    本文标题:Android面试题整理(一)

    本文链接:https://www.haomeiwen.com/subject/aqmeuxtx.html