paused :activity 失去焦点的时候,被一个非全屏的 activity 占据或者被一个透明的 activity 覆盖,这个状态的 activity 并没有销毁,它所有的状态信息和成员变量仍然存在,只是不能够被点击。(内存紧张的情况,这个 activity 有可能被回收)
stopped :这个 activity 被另外一个 activity 完全覆盖,但是这个 activity 的所有状态信息和成员变量仍然存在(除了内存紧张)
killed :这个 activity 已经被销毁,其所有的状态信息和成员变量已经不存在了。
1.9 如何处理异常退出Activity 异常退出的时候 --> onPause() --> onSaveInstanceState() --> onStop() --> onDestory()
需要注意的是 onSaveInstanceState() 方法与 onPause 并没有严格的先后关系,有可能在 onPause 之前,也有可能在其后面调用,但会在 onStop() 方法之前调用
异常退出后又重新启动该 Activity --> onCreate() --> onStart() --> onRestoreInstanceState() --> onResume()
搞懂这个生命周期的执行后就可以回答了,首先要知道面试官的意思:是要重新启动并恢复这个 Activity 还是说直接退出整个 app
如果要恢复则要在 onSaveInstanceState() 中进行保存数据并在 onRestoreInstanceState() 中进行恢复
如果是要退出 app 的话就要捕获全局的异常信息,并退出 app
当然个人建议是使用 UncaughtExceotionHandler 来捕获全局异常进行退出 app 的操作,这样会减少之前崩溃所造成的后遗症!
1.10 什么是 onNewIntent如果 IntentActivity 处于任务栈的顶端,也就是说之前打开过的 Activity ,现在处于 onPause 、 onStop 状态的话,其他应用再发送 Intent 的话
执行顺序为:onNewIntent,onRestart,onStart,onResume。
2. 启动模式 2.1 启动模式Activity 一共有四种 launchMode :standard 、singleTop 、singleTask 、singleInstance 。
Standard 模式(默认模式)
说明: 每次启动一个 Activity 都会又一次创建一个新的实例入栈,无论这个实例是否存在。
生命周期:每次被创建的实例 Activity 的生命周期符合典型情况,它的 onCreate 、onStart 、onResume 都会被调用。
举例:此时 Activity 栈中以此有 A 、B 、C 三个 Activity ,此时C处于栈顶,启动模式为 Standard 模式。若在 C Activity 中加入点击事件,须要跳转到还有一个同类型的 C Activity 。结果是还有一个 C Activity 进入栈中,成为栈顶。
SingleTop 模式(栈顶复用模式)
说明:分两种处理情况:须要创建的 Activity 已经处于栈顶时,此时会直接复用栈顶的 Activity 。不会再创建新的 Activity ;若须要创建的 Activity 不处于栈顶,此时会又一次创建一个新的 Activity 入栈,同 Standard 模式一样。