我有一个具有“登录”和“注销”操作的应用程序。用户登录后,在他们注销时堆栈中可能还剩下任意数量的 Activity 。
当用户注销时,我希望重置所有应用程序状态。我清除了我的磁盘缓存和首选项,但在运行(暂停) Activity 中仍有剩余状态。事实上,当用户再次登录时,我发现上次登录 session 中的旧 Activity 仍然保持着它们的旧状态(我当然理解为什么会这样)。我怎样才能使整个应用程序重置/关闭/重新启动?
我看过一些关于使用 startActivityForResult()
、onActivityResult()
冒泡“注销”结果代码导致每个 Activity 依次关闭的帖子.这看起来很痛苦,我希望有更好的方法。
编辑:我已经尝试使用各种标志启动“登录” Activity ,但无济于事,
loginIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
最佳答案
在您的 list 上,您可以将以下属性添加到您的 Activity 中:
android:clearTaskOnLaunch="true"
所以你最终会得到这样的东西:
<activity android:name=".ui.Activity" android:clearTaskOnLaunch="true" android:theme="@style/MyTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
关于机器人 "close" Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11199216/