Activity
- 概念
它指的是用户可以看到的界面,界面中有一些控件,它是放在res/layout下面,是xml文件来实现的。启动activity时需要在配置文件中注册。
Activity的生命周期
- oncreate
[Android入门- 关于Activity下的onCreate方法]
activity创建的时候调用。
这里面还以Bundle形式提供对以前存储的任何状态进行访问。
整个生命周期只会调用一次而且是 最先开始的。
一般做初始化操作。 - onstart
屏幕上对用户可见时调用,启动activity,使界面可见。 - onresume
开始与用户交互时调用。
恢复activity,使界面可操作 - onpause
可见保存当前数据,类似于对话框的时候调用。
被暂停时保存当前游戏信息,界面可见不可操作 - onstop
界面不可见,不可操作 - ondestroy
activity完全移除时调用 - onrestart
- onSaveInstanceState
activity即将移除栈顶保留UI状态时调用 - onRestoreInstanceState 用来恢复UI状态
三个activity的跳转
1)创建三个activity分别是MainActivity,Main2Activity,Main3Activity;
2)写出每个activity的生命周期,并输出相应的类名和方法名
3)打印结果:
- 当MainActivity启动的时候
main onCreate
main onStart
main onResume
-
当MainActivity跳转到Main2Activity的时候
onResume() 的注释中,建议是在onResume()中打开独占设备(比如相机),与onResume()对应的是onPause(),关闭相机的操作也应该在此方法中被调用;否则,考虑一下如下场景:如果MainActivity打开了相机,我们点击某按钮要跳转到Main2Activity中,Main2Activity也想打开相机;假设MainActivity的onPause() 在 Main2Activity启动后再被调用,
那Main2Activity根本就无法再正常启动相机。
摘自:[Activity的生命周期]
main onPause
main2 onCreate
main2 onStart
main2 onResume
main onStop
- Main2Activity回退到MainActivity的时候
main2 onPause
main onRestart
main onStart
main onResume
main2 onStop
main2 onDestroy
- 当Main2Activity跳转到Main3Activity的时候
为什么main2先调用onpause呢?有一种情况就是如果先调用main2 onPause,main2 onStop。那么当main2跳转到main3 的过程中main3打不开了,那么界面就是黑屏,严重影响用户体验。如果是下面的情况就不会出现黑屏。
main2 onPause
main3 onCreate
main3 onStart
main3 onResume
main2 onStop
- 当Main3Activity跳转到MainActivity的时候
main3 onPause
main onCreate
main onStart
main onResume
main3 onStop