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()
你的 SubActivity
在 onBackPressed
中摧毁它并回到你的 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)
我做了两个测试活动。
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()
你的 SubActivity
在 onBackPressed
中摧毁它并回到你的 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)