生命周期状态

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从停止状态到再次启动时调用

activity不可见生命周期 android android activity 生命周期_ide

用控制台查看运行方法

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"