面试的时候,经常会被面试官问到,说一下Activity 的启动模式?Activity的生命周期都有那些?如果一个 Activity 跳转另一个 Activity 再按下Home 键再回到Activity 的生命周期又是什么样的?
一、启动模式
Standard 模式:Activity 可以有多个实例,每次启动 Activity,无论任务栈中是否已经有这个 Activity 的实例,系统都会创建一个新的 Activity 实例
SingleTop 模式:当一个 singleTop 模式的 Activity 已经位于任务栈的栈顶,再去启动它时,不会再创建新的实例,如果不位于栈顶,就会创建新的实例
SingleTask 模式:如果 Activity 已经位于栈顶,系统不会创建新的 Activity 实例, 和 singleTop 模式一样。但 Activity 已经存在但不位于栈顶时,系统就会把该Activity 移到栈顶,并把它上面的 activity 出栈
SingleInstance 模式:singleInstance 模式也是单例的,但和 singleTask 不同,singleTask 只是任务栈内单例,系统里是可以有多个 singleTask Activity 实例的, 而 singleInstance Activity 在整个系统里只有一个实例,启动一singleInstanceActivity 时,系统会创建一个新的任务栈,并且这个任务栈只有他一个 Activity
二、生命周期
onCreate onStart onResume onPause onStop onDestroy
三、两个Activity 跳转的生命周期
1.启动 A
onCreate - onStart - onResume
2. 在 A 中 启 动 B
ActivityA onPause
ActivityB onCreate
ActivityB onStart
ActivityB onResume
ActivityA onStop
3.从 B 中返回 A(按物理硬件返回键)
ActivityB onPause ActivityA onRestart ActivityA onStart
ActivityA onResume ActivityB onStop ActivityB onDestroy
4.继续返回
ActivityA onPause ActivityA onStop ActivityA onDestroy
网友评论