Android面试-第一期

155 阅读3分钟

后续会持续更新,建议收藏关注

什么是Activity,描述一下它的生命周期

这道题想考察什么?

开发了android N年,对Activity应该有很深刻的认识,如果只知道回答生命周期,未免太浅薄。如果能回答一些项目中使用过的Activity相关的实用技巧,加分。

细分下来的知识点

  1. 对Activity的整体认知
  2. Activity的生命周期

如何作答

  1. Activity是android四大组件之一,一般的,一个用户交互界面对应一个 activity。通常用setContentView() 方法设置要显示的布局. Activity 是 Context 的子类,同时实现了 window.callback 和keyevent.callback, 可以处理与窗体用户交互的事件.

  2. Activity 从创建到销毁有多种状态,从一种状态到另一种状态时会激发相应的回调方法,这些回调方法包括:onCreate-> onStart-> onResume-> onPause-> onStop->onDestroy. 从onStop恢复到onStart要经过onRestart.

    其实这些方法都是两两对应的,onCreate 创建与 onDestroy 销毁;onStart 可见与 onStop 不可见;onResume 可编辑(即焦点)与 onPause;


onStart 和 onResume, onPause 和 onStop 差不多, 但是又有什么本质的不同呢?

这道题想考察什么

Activity 拥有不同的状态,生命周期方法纯粹是 这些状态改变之后的回调。这道题考察你对Activity状态的理解。

细分下来的知识点

  1. 状态有哪几种
  2. 回答onStart和onResume的区别,onPause和onStop的区别
  3. 如果能答上某些特殊情况下的生命周期函数的调用方式,加分

如何作答

  1. Running状态:一个新的Activity启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。 Paused状态:当Activity被另一个透明或者Dialog样式的Activity覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,它仍然可见,但它已经失去了焦点,故不可与用户交互。

    Stopped状态:当Activity不可见时,Activity处于Stopped状态。当Activity处于此状态时,一定要保存当前数据和当前的UI状态,否则一旦Activity退出或关闭时,当前的数据和UI状态就丢失了。

    Killed状态:Activity被杀掉以后或者被启动以前,处于Killed状态。这是Activity已从Activity堆栈中移除,需要重新启动才可以显示和使用。

  2. onStart()和onResume()的区别

    onStart()是activity界面被显示出来的时候执行的,用户可见,包括有一个activity在他上面,但没有将它完全覆盖,用户可以看到部分activity但不能与它交互.

    onResume()是当该activity与用户能进行交互时被执行,用户可以获得activity的焦点,能够与用户交互。

image-20201025221315281.png

  1. onPause: Activity是去焦点,但仍然可见;

    onStop:Activity在后台不可见时触发(完全被另一个Activity挡住,或者程序在后台运行)

  2. 场景:

    • 锁屏的时候户依次调用onPause()和onStop()

    • Toast,Dialog,menu ,三者都不会使Activity调用onPause();

    • 一个非全屏的Activity在前面时,后面的Activity只调用onPause();

    总结: Dialog不会调用onPause()和onStop(), 非全屏Activity会调用onPause()不会调用onStop(),全屏Activity 会调用onPause()和onStop()。