【原创】Activity个人总结

Activity任务栈

Android中管理Activity的方式:Activity任务栈
Activity的四种状态:
Active:当前Activity处在栈顶+可见+可交互
Paused:当前Activity可见但不可交互,处于失焦状态。比如当Activity被另一个非全屏Activity覆盖时。
Stopped:当前Activity被完全覆盖
Killed:被回收


Activity任务栈.png

如图所示,对于不是处在栈顶的Activity,随时可能被回收

Activity生命周期

Activity生命周期.png

onSaveInstanceState:
当系统存在“未经许可”杀死Activity时调用,适合在这里保存瞬时数据,不适合保存持久化数据。

特别注意:当从ActivityB按Back键返回ActivityA时不会调用onSaveInstanceState方法,因为这是在“用户许可”的情况下杀死Activity

未经许可的几种情况:
1.当用户按下HOME键时
2.长按HOME键切换其他App时
3.关闭屏幕时
4.ActivityA启动ActivityB时
5.屏幕旋转/改变语言时

onRestoreInstanceState:
只有在Activity“确实”被系统销毁了才会走
也就是说,onSaveInstanceState和onRestoreInstanceState调用不是对称的

Activity启动模式

standard
singleTop:如果目标不在栈顶才会重复创建一个
singleTask:根据TaskAffinity去找有没有对应的任务栈,如果在对应任务栈中存在该Activity就把它上面的其他Activity都清除
singleInstance:一个Activity独享一个任务栈(独占性)

注意

设置了singleInstance和singleTask的Activity具有全局唯一性,即同一时刻在Android系统中只能存在该Activity的一个实例

你可能感兴趣的:(【原创】Activity个人总结)