在这种情况下,我应该使用FLAG_ACTIVITY_CLEAR_TOP吗?

时间:2019-06-04 05:51:44

标签: android android-activity kotlin

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

如果用户成功更改了密码,我想将其发送回第一个活动LoginActivity。我想在此过程中pop DashboardActivity来防止任何不必要的缠绵活动。

在这种情况下,使用FLAG_ACTIVITY_CLEAR_TOP启动新的LoginActivity是否正确?我想知道在这种情况下哪些标志是合适的。

关于其价值,我的DashboardActivity在我的launchMode中有一个singleTop设置为AndroidManifest

2 个答案:

答案 0 :(得分:0)

  

如果您只想从堆栈中清除先前的活动,然后   启动登录活动即可

manifest文件中,您的登录活动应为

<activity
    android:name=".LoginActivity"
    android:screenOrientation="portrait"/>

更改密码后,启动带有以下标记的登录名activity

Intent intent = new Intent(ChangePassword.this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();

通过将标志设置为Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK 所有先前的活动将从堆栈中清除。

有关更多信息,请检查此 https://developer.android.com/reference/android/content/Intent 根据官方文档-FLAG_ACTIVITY_CLEAR_TOP

  

如果已设置,并且正在启动的活动已经在   当前任务,而不是启动该任务的新实例   活动,除此以外的所有其他活动将被关闭,   该意图将作为   新的意图。

     

例如,考虑一个由以下活动组成的任务:A,B,C,D。   如果D调用具有解析为Intent的Intent的startActivity(),   活动B的组成部分,则C和D将完成,B将收到   给定的Intent,导致堆栈现在为:A,B。

答案 1 :(得分:0)

  

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

  • 要清除LoginActivty的任务和意图,您应该使用

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

  

在这种情况下,使用FLAG_ACTIVITY_CLEAR_TOP启动新的LoginActivity是否正确?我想知道哪些标记适合此

  • FLAG_ACTIVITY_CLEAR_TOP将清除堆栈中的所有内容并进行 新活动作为根任务。就您而言,以前没有 LoginActivity的活动也可以,但不建议这样做。
  

对于它的价值,我的DashboardActivity在AndroidManifest中将launchMode设置为singleTop。