Android面试题(1)Activity生命周期

Activity周期面试题可以算的上是老生常谈了, 但是可能问题发生一些变化有的同学就不知从何说起了.主要还是能够真正理解生命周期的作用, 这样怎么问都能够对答入流.

1.Activity生命周期图


Android面试题(1)Activity生命周期_第1张图片

Activity生命周期主要流程 onCreate->onStart->onResume->onPause->onStop->onDestory, 这个同学们应该可以倒背如流了. 

2.Activity的四种状态

Running状态:

一个新的Activity启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。

Paused状态:

当Activity被另一个透明或者Dialog样式的Activity覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,它仍然可见,但它已经失去了焦点,故不可与用户交互。

Stopped状态:

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

Killed状态:

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

4种状态中,Running状态和Paused状态是可见的,Stopped状态和Killed状态是不可见的。

3.调用时机

onResume:

Running状态, 可见并可与用户进行交互.

onPause: 

可见状态, 不可与用户进行交互, 例如被透明Dialog遮挡.

onStart&onStop:  

Activity进入后台(被新的Activity遮盖或者Home键退出), 调用onStop, 返回Activity时调用onRestart ->  onStart.

4.面试问题

onStart()和onResume()的区别?

onStart()是activity界面被显示出来的时候执行的,用户可见,包括有一个activity在他上面,但没有将它完全覆盖,用户可以看到部分activity但不能与它交互onResume()是当该activity与用户能进行交互时被执行,用户可以获得activity的焦点,能够与用户交互。onStart()通常就是onStop()(也就是用户按下了home键,activity变为后台后),之后用户再切换回这个activity就会调用onRestart()而后调用onStart().onResume()是onPause()(通常是当前的acitivty被暂停了,比如被另一个透明或者Dialog样式的Activity覆盖了),之后dialog取消,activity回到可交互状态,调用onResume()。

什么情况下Activity走了onCreat(),而不走onStart()?

通常情况都会调用onStart, 但是发生异常或者调用finish(),是不会接着调用生命周期的.


Android面试题(1)Activity生命周期_第2张图片

onSaveInstanceState调用时机/ onpause onstop onSaveInstanceState 调用顺序

http://blog.csdn.net/qq_23547831/article/details/51464535

这个文章讲解的比较细致了, 需要注意的是你需要看一下评论, onStop的时候不是一定调用onSaveInstanceState的

你可能感兴趣的:(Android面试题(1)Activity生命周期)