Android 生命周期

时间:2020-05-09
本文章向大家介绍Android 生命周期,主要包括Android 生命周期使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Android 生命周期

返回栈

Android中的Activity是以栈的形式运行的,每启动一个Activity就入栈,且永远显示栈顶的Activity,按下Back或执行finish()时,栈顶Activity出栈。

Activity活动状态

运行状态

处于栈顶的Activity。

暂停状态

不处于栈顶,但可见的Activity。

停止状态

不处于栈顶,且不可见Activity。

销毁状态

不在栈中的Activity。

Activity关于状态的方法

  • onCreate():启动Activity就会执行的方法,且没有被销毁的情况下只执行一次。
  • onStart():每次将Activity由不可见变成可见时,就会执行。
  • onResume():Activity处于栈顶,且可见,又处于可交互状态时,执行。
  • onPause():当Activity不处于栈顶,且可见,又不可交互时,执行。
  • onStop():当Activity不处于栈顶,且不可见,又不可交互时,执行。
  • onDestroy():当Activity出栈时,执行,执行后Activity为销毁状态。
  • onRestart():由暂停转为运行之前调用。

执行顺序:

内存自动回收

只有Activity处于暂停/销毁状态时,才会被回收。

保存被回收Activity的数据

使用onSaveInstanceState()方法,当Activity被停止后会执行onSaveInstanceState()方法,用来防止Activity在停止的状态下被内存回收,导致数据丢失,那么我们就可以使用此函数来保存Activity的临时数据。

注:当按下BACK时,不会保存数据。

测试本段代码:启动后,在模拟器中将自动旋转屏幕打开,然后旋转一下屏幕,当前的Activity就会被销毁重建一次。

private static final String TAG = "MainActivity";
@Override
protected void onSaveI
    nstanceState(@NonNull Bundle outState) {
    super.onSaveInstanceState(outState);
    String tempData = "temp data";
    outState.putString("temp_data",tempData);
}

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, "onCreate: ");
        setContentView(R.layout.activity_main);
        if (savedInstanceState != null){
            String tempData = savedInstanceState.getString("temp_data");
            Log.d(TAG, "onCreate: "+tempData);
        }
    }

原文地址:https://www.cnblogs.com/lisztomania/p/12855271.html