Android StartActivity 首先杀死现有的活动,它的 ondestroy 应该被调用并切换到新的活动

Posted

技术标签:

【中文标题】Android StartActivity 首先杀死现有的活动,它的 ondestroy 应该被调用并切换到新的活动【英文标题】:Android StartActivity kill the exisiting activity first and its ondestroyed should get called and Switch to new Activity 【发布时间】:2020-09-01 17:02:27 【问题描述】:

android StartActivity 首先杀死 Activity1,它的 ondestroyed 应该被调用。完成后,打开另一个活动。

  startActivity(new Intent(Activity1.this, Activity2.class));
                        finish();

即使我在这种情况下首先调用完成,Activity1 ondestroy 方法也会在 Activity2 显示给用户之后调用。我正在寻找正确的方法,我可以确保 Activity1 被完全销毁然后只显示 Activity2

【问题讨论】:

【参考方案1】:

你可以调用finish(),在onDestroy()里面调用startActivity():

void onDestroy() 
  startActivity(new Intent(Activity1.this, Activity2.class));
  super.onDestroy();

【讨论】:

【参考方案2】:

Mabye noHistoryatrribute 帮你解决这个问题

<activity android:name=".ClassName" android:noHistory="true" ... />

另外,看看这篇文章: Start new Activity and finish current one

【讨论】:

以上是关于Android StartActivity 首先杀死现有的活动,它的 ondestroy 应该被调用并切换到新的活动的主要内容,如果未能解决你的问题,请参考以下文章

应用内部启动startActivity-Android12

Android 10 startActivity 源码分析

Android - 从 startActivity 获取活动对象

浅显易懂的startActivity原理分析

Android 系统源码初步阅读之 activity 的 startActivity(intent) 与 非 activity 的 startActivity(...) 的不同

Android 系统源码初步阅读之 activity 的 startActivity(intent) 与 非 activity 的 startActivity(...) 的不同