Android基础-Activity

1 activity的生命周期

运行程序:CustomView是一个自定义View

04-18 01:51:12.923 29434-29434/? E/onCreate: onCreate()
04-18 01:51:12.925 29434-29434/? E/onStart: onStart()
04-18 01:51:12.927 29434-29434/? E/onResume: onResume()
04-18 01:51:12.990 29434-29434/? E/CustomView: onMeasure
04-18 01:51:13.097 29434-29434/? E/CustomView: onMeasure
04-18 01:51:13.097 29434-29434/? E/CustomView: onLayout

04-18 01:51:13.264 29434-29434/? E/onWindowFocusChanged: onWindowFocusChanged()

横竖屏切换的生命周期:onPause()->onSaveInstanceState()-> onStop()->onDestroy()->onCreate()->onStart()->onRestoreInstanceState->onResume()        

注意重写的onSaveInstanceState()方法为下面的这个,否则不对。

onSaveInstanceState(Bundle outState)

2 activity的启动模式(launchMode)

总共有四种启动模式:stardad

Android基础-Activity

singleTop(栈顶复用)

Android基础-Activity

,singleTask(栈内复用)

Android基础-Activity

singleInstance(单列模式)

Android基础-Activity

3 Activity的任务栈,也就是activity的集合,并可以管理activity

1. android任务栈又称为Task,它是一个栈结构,具有后进先出的特性,用于存放我们的Activity组件。 
2. 我们每次打开一个新的Activity或者退出当前Activity都会在一个称为任务栈的结构中添加或者减少一个Activity组件,因此一个任务栈包含了一个activity的集合, android系统可以通过Task有序地管理每个activity,并决定哪个Activity与用户进行交互:只有在任务栈栈顶的activity才可以跟用户进行交互。 
3. 在我们退出应用程序时,必须把所有的任务栈中所有的activity清除出栈时,任务栈才会被销毁。当然任务栈也可以移动到后台, 并且保留了每一个activity的状态. 可以有序的给用户列出它们的任务, 同时也不会丢失Activity的状态信息。 
4. 需要注意的是,一个App中可能不止一个任务栈,某些特殊情况下,单独一个Actvity可以独享一个任务栈。还有一点就是一个Task中的Actvity可以来自不同的App,同一个App的Activity也可能不在一个Task中。

在app中新开一个任务栈需要使用android:taskAffinity这个属性,一般来说这个属性会和singleTask模式结合使用

通过 adb shell dumpsys activity activities命令查看栈的情况