文章目录
关于activity的主要就是生命周期和启动模式,这两个贯穿你开发的整个周期
关键词联想:两两对应,普通,栈顶内独
1、生命周期
先看图,以前开发一直百度找这张图
1.1 、正常使用的周期方法
- onCreate 在Activity第一次被创建时调用onCreate方法。我们通常在onCreate方法中加载布局,初始化控件。
- onStart 在Activity变为可视的时候,调用onStart方法。
- onResume 当Activity处于栈顶,并处于正在运行状态,可以与用户进行交互的时候,调用onResume方法。
- onPause 当Activity已经失去焦点,且依旧是可视状态时调用onPause方法,此时Activity无法与用户进行交互。
- onStop 当Activity从可视变为不可视的时候,调用onStop方法。
- onDestory onDestory方法在Activity被销毁前调用。
- onRestart onRestart方法在Activity被重新启动时调用,在Activity第一次被创建的时候不会调用。
其实吧 生命周期有个简单的记忆方法,他们都是两两对应的
- onCreate -onDestory 创建销毁
- onStart -onStop 可视or不可视
- onResume - onPause 可交互or不可交互
剩下一个只有在activity重新启动才会调用的 onRestart
1.1 、非正常周期方法 onSaveInstanceState() 与 onRestoreInstanceState()
这两货一般你用不到,用到的时候就是测试给你提bug的时候,怎么突然界面奔溃了,因为当用户重新打开页面时
内存数据已经被干掉了
- onSaveInstanceState:用于保存Activity状态信息
- onRestoreInstanceState方法在Activity被系统销毁之后恢复Activity时被调用,用于恢复Activity状态信息
onSaveInstanceState被调用:
- 当用户按下HOME键时。
- 切换到其他进程时。
- 锁屏时。
- 启动新的Activity时。
- 屏幕方向切换时
onRestoreInstanceState被调用:在Activity被系统销毁,又回到该Activity的时候
1.3、来个例子实战下
- 启动Activity并点击回退键退出Activity:
onCreate() -> onStart() -> onResume() ->onPause() -> onStop() -> onDestory() - 按下HOME键并再次点击应用
onPause() -> onSaveInstanceState() -> onStop()->onRestart() -> onStart() -> onResume() - 切换到其他应用并切回来
onPause() -> onSaveInstanceState() -> onStop()->onRestart() -> onStart() -> onResume() - 锁屏并解锁
onPause() -> onSaveInstanceState() -> onStop()->onRestart() -> onStart() -> onResume() - 跳转到另一个透明Activity并点击回退键返回
这里有点个因为是透明的所以,onStop,onStart并不会回调 - 由竖屏转为横屏
onPause() -> onSaveInstanceState() -> onStop()->ondestory->onCreate -> onStart() ->onRestoreInstanceState->onResume
2、启动模式
- 标准模式 standard:每次启动的时候都会在Activity栈顶创建一个实例
- 栈顶复用模式 singleTop: 只有当该Activity存在于栈顶的时候才不会新建,如果不在栈顶,Android同样会重新创建该Activity实例
- 栈内复用模式 singleTask:只要栈内有就会复用
- 单实例模式 singleInstance 一个栈就他,无论你从哪个栈过来,只要创建了就会复用