MainAcitivty调用onDestroy()时,如何调用全部activity个onDestroy()?

How to call all activity onDestroy() when MainAcitivty call onDestroy()?

我做了两个测试活动。

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this, SubActivity.class));
            }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }
}

MainActivity中的这个按钮可以启动SubActivity。

public class SubActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }

    @Override
    public void onBackPressed() {
        startActivity(new Intent(SubActivity.this, MainActivity.class));
    }
}

当在 SubActivity 中,按下后退按钮时,它不会在 SubActivity class 中调用 onDestroy() 并启动 MainActivity。我想做的是,当我完成 MainActivity 时如何调用 SubActivity onDestroy()?当我在 MainActivity 中按下后退按钮时,它不会调用 SubActivity onDestroy()。有没有像使用 Intent.FLAG_ACTIVITY?

这样的解决方案

你应该 finish() 你的 SubActivityonBackPressed 中摧毁它并回到你的 MainActivity,而不是做 startActivity。在许多情况下,即使您不自己实现 onBackPressed,您也会得到这种行为。您当前的代码正在启动第二个 MainActivity.

提出的解决方案 here 对我有用:

在Java:-

    Intent i = new Intent(OldActivity.this, NewActivity.class);
// set the new task and clear flags
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(i);

在 Kotlin 中:-

val i = Intent(OldActivity.this, NewActivity::class.java)
// set the new task and clear flags
i.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
startActivity(i)