Activity生命周期
首先先了解生命周期的四个状态
活动状态:Activity在用户界面中位于最上层,完全能被用户看到,最重要的是能和用户交互,比如点击按钮,滑动手势等
暂停暂停:Activity界面被部分遮挡,该界面不再位于用户界面的最上层,且用户不能喝它进行交互
停止状态:完全不能被用户看到,就是界面处于后台的时候
非活动状态:就是除了上面三种状态中的Activity,比如你把一个应用关闭了
Activity生命周期图示
- 启动Activity时,系统会先调用onCreate()方法,然后调用onStart()方法,最后调用onResume()方法,Activity进入活动状态,也就是对于用户来说可以进行交互的状态
- 当Activity被其他Activity部分覆盖或者锁屏时,Activity不能与用户进行交互,系统会调用onPause()方法,暂停当前的Activity的执行,Activity进入暂停暂停
- 当Activity由被覆盖的状态回到前台或者解除锁屏时,系统会调用onResume()方法,再次进入活动状态
- 当切换到新的Activity界面或者按Home键返回主屏幕时,当前Activity完全不可见,转到后台,系统会先调用onPause()方法,然后调用onStop()方法,Activity进入停止状态
- 当Activity处于停止状态时,用户返回到此Activity,系统会先调用onRestart()方法,然后调用onStart()方法,最后调用onResume()方法,再次进入运行状态
- 当Activity处于被覆盖状态或者后台不可见,即处于暂停或者停止状态时,如果系统内存不足时,就可能杀死这个Activity。而后用户退回这个Activity时,则会依次调用onCreate()->onStart()->onResume(),使其放活动状态
- 用户退出当前Activity时,系统会先调用onPause()方法,然后调用onStop方法,最后调用onDestory()方法,结束当前Activity
Activity的启动模式
- standard(默认启动)
一个堆栈中可以有多个相同的的界面,这里说的相同,好比说停车场中型号颜色一样的车,但是有不同的车牌和车位
- singleTop
Activity处于栈顶时,不会重新创建,只会调用OnNewInstance方法,如果Activity不在栈顶则重新创建一个新的Activity
- singleTask
在堆栈中只允许存在一个界面A,如果再创建界面A,就会调用onNewIntent()方法
- singleInstance
创建Activity时,先创建一个新的栈,然后将这个Activity放入该栈中