在我的应用中,我有以下Activity
流程:
LoginActivity
> DashboardActivity
>(如果用户选择更改密码)> ChangePasswordActivity
如果用户成功更改了密码,我想将其发送回第一个活动LoginActivity
。我想在此过程中pop
DashboardActivity
来防止任何不必要的缠绵活动。
在这种情况下,使用FLAG_ACTIVITY_CLEAR_TOP
启动新的LoginActivity
是否正确?我想知道在这种情况下哪些标志是合适的。
关于其价值,我的DashboardActivity
在我的launchMode
中有一个singleTop
设置为AndroidManifest
。
答案 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是否正确?我想知道哪些标记适合此
对于它的价值,我的DashboardActivity在AndroidManifest中将launchMode设置为singleTop。