如何检查 android 是否要重新创建 activity 或销毁?

how to check if android going to recreate activity or destroy?

我有一个 android 工作室项目。当我旋转屏幕时,android 销毁并重新创建主 activity。如果 android 要重新创建 activity,我如何在销毁期间检查?

您可以使用 onDestroy 中的 isFinishing() 来确定 activity 是否由用户选择完成(例如,用户选择通过按返回退出)。

  @Override
  protected void onDestroy() {
    super.onDestroy();
    if (isFinishing()) {
      // wrap stuff up
    } else { 
      //It's an orientation change.
    }
  }

另一种选择(如果您只定位 API>=11)是 isChangingConfigurations

  @Override
  protected void onDestroy() {
    super.onDestroy();
    if (isChangingConfigurations()) {
      //It's an orientation change.
    }
  }

覆盖 Activity 生命周期方法以查看 flow.And 然后使用适当的方法检查 activity 当前状态,如 isChangingConfigurations() 示例代码片段。

MainActivity.java

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.i(MainActivity.class.getSimpleName(),"OnStart Called");
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.i(MainActivity.class.getSimpleName(),"OnRestart Called");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i(MainActivity.class.getSimpleName(),"OnDestroy Called");
    }


    @Override
    protected void onPause() {
        super.onPause();
        Log.i(MainActivity.class.getSimpleName(),"OnPause Called");
    }

   @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        Log.i(MainActivity.class.getSimpleName(),"OnConfiguration Changed Called");
    }

}

更多详情见官方页面activity-lifecycle