Android 在这种情况下,我应该使用FLAG\u ACTIVITY\u CLEAR\u TOP吗?如何使用标志\活动\清除\顶部意图标志?

Android 在这种情况下,我应该使用FLAG\u ACTIVITY\u CLEAR\u TOP吗?如何使用标志\活动\清除\顶部意图标志?,android,kotlin,android-intent,android-activity,Android,Kotlin,Android Intent,Android Activity,在我的应用程序中,我有以下活动流程: LoginActivityDashboardActivity>(如果用户选择更改密码)>ChangePasswordActivity 如果用户成功更改了密码,我想将其发送回第一个活动,即LoginActivity。我希望在此过程中弹出仪表板活动,以防止任何不必要的延迟活动 在这种情况下,使用FLAG\u ACTIVITY\u CLEAR\u TOP启动新的LoginActivity是否正确?我想知道在这种情况下哪些标志是合适的 值得一提的是,我的仪表板活动在

在我的应用程序中,我有以下
活动
流程:
LoginActivity
DashboardActivity
>(如果用户选择更改密码)>
ChangePasswordActivity

如果用户成功更改了密码,我想将其发送回第一个活动,即
LoginActivity
。我希望在此过程中
弹出
仪表板活动
,以防止任何不必要的延迟活动

在这种情况下,使用
FLAG\u ACTIVITY\u CLEAR\u TOP
启动新的
LoginActivity
是否正确?我想知道在这种情况下哪些标志是合适的

值得一提的是,我的
仪表板活动
在我的
AndroidManifest
中将
启动模式
设置为
singleTop

如果您只想从堆栈和中清除以前的活动 启动登录活动只需执行此操作

清单
文件中,您的登录活动应如下所示

<activity
    android:name=".LoginActivity"
    android:screenOrientation="portrait"/>
通过将标志设置为
Intent.flag_ACTIVITY_NEW_TASK | Intent.flag_ACTIVITY_CLEAR_TASK
所有以前的活动都将从堆栈中清除

有关更多信息,请查看此 从官方文档中-
标记活动\u清除\u顶部

如果已设置,则正在启动的活动已在中运行 当前任务,而不是启动该任务的新实例 活动,其上的所有其他活动都将关闭,并且 此意图将作为一个整体传递给(现在位于顶部)旧活动 新的意图

例如,考虑一个由活动组成的任务:A、B、C、D. 如果D调用startActivity()的目的是解决 活动B的组件,然后C和D将完成,B将收到 给定的意图,导致堆栈现在为:A,B

LoginActivity>DashboardActivity>(如果用户选择更改密码)>ChangePasswordActivity

  • 为了明确后勤活动的任务和意图,您应该使用

    intent.setFlags(intent.FLAG_ACTIVITY_NEW_TASK | intent.FLAG_ACTIVITY_CLEAR_TASK)

在这种情况下,使用FLAG_ACTIVITY_CLEAR_TOP启动新的LoginActivity是否正确?我想知道哪种旗子适合这种场合

  • FLAG_ACTIVITY_CLEAR_TOP将清除堆栈中的所有内容并生成 将新活动作为根任务。在您的情况下,没有以前的 后勤活动也可以,但不可取
值得一提的是,我的DashboardActivity在我的AndroidManifest中将launchMode设置为singleTop

  • 虽然您在这里获得了“LaunchMode”的详细信息,但它在您的情况下不会有用
  • 也检查 详情

这个答案解释了这一点。简言之,如果您已经在后台设置了登录屏幕,并且希望在不重置堆栈的情况下启动它,那么clear_top将是理想的。如果这是我的任务,我会检查自己。自己发现它不是更令人兴奋吗?您可以使用finishAffinity代替finish,但它将创建新的insta登录活动的名称。请检查此项
Intent intent = new Intent(ChangePassword.this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();