生命周期状态
Activity的生命周期是指Activity从创建到销毁的整个过程,这个过程一般分为五个状态。
1.启动状态
2.运行状态
Activity处于界面的最前端,他是可见,有焦点的,可以与用户交互的。
Activity处于运行状态时,Android会尽可能的保持这个状态,即使内存不足的情况,Android也会优先销毁栈底的Activity。
3.暂停状态
Activity对用户来说仍然可见,但是无法获取焦点,对用户对他的操作没有反应,此时它处于暂停状态。
如游戏充值中的支付小窗口。
4.停止状态
Activity完全不可见,它处于停止状态。
5.销毁状态
Activity将被清理出内存
生命周期方法
Activity的生命周期包含创建、可见、获取焦点、失去焦点、不可见、重新可见、销毁等环节,针对每一个环节Activity都定义了相关回调方法。
1.onCreate()
Activity创建时调用,进性初始化设置。 Activity启动,不可见。
2.onStart()
Activity即将可见时调用, Activity可见,不能进行交互
3.onResume()
Activity获取焦点时调用 Activity可见,可交互
4.onPause()
当前Activity被其他Activity覆盖或屏幕锁屏时调用 Activity暂停
5.onStop()
Activity停止, Activity不可见,后台运行
6.onDestroy()
Activity销毁时调用
7.onRestart()
Activity从停止状态到再次启动时调用
用控制台查看运行方法
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate ( savedInstanceState );
setContentView ( R.layout.activity_main );
Log.i ("MainActivity","调用onCreate");
}
@Override
protected void onStart(){
super.onStart ();
Log.i ( "MainActivity","调用onStart" );
}
@Override
protected void onResume(){
super.onResume ();
Log.i ( "MainActivity","调用onResume" );
}
@Override
protected void onPause(){
super.onPause ();
Log.i ( "MainActivity","调用onPause" );
}
@Override
protected void onStop(){
super.onStop ();
Log.i ( "MainActivity","调用onStop" );
}
@Override
protected void onDestroy(){
super.onDestroy ();
Log.i ( "MainActivity","调用onDestroy" );
}
@Override
protected void onRestart(){
super.onRestart ();
Log.i ( "MainActivity","调用onRestart" );
}
}
横竖屏切换时的生命周期
过程
当手机切换横竖屏的时候,会根据AndroidManifest.xml(清单文件)中Activity的configChanges属性值的
不同而调用相应生命周期的方法
当没有设置configChanges属性值的时候,由竖屏切换到横屏需要用onPause()、onStop()、onDestroy()、
onCreate()、onStart()、onResume()的方法。
设置
由上面的过程可知,横竖屏切换需要销毁前一个屏幕,这样对程序的使用有一定的影响,比如在输入用户
信息时,横竖屏切换会使数据丢失。
设置切换时不销毁
<activity android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden">
如果不希望屏幕随手机一起晃动,可以在AndroidManifest.xml清单文件中设置screenOrientation的属性值
//竖屏:
android:screenOrientation="portrait"
//横屏:
android:screenOrientation="landscape"