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
singleTop(栈顶复用)
,singleTask(栈内复用)
singleInstance(单列模式)
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
命令查看栈的情况