我有一个具有“登录”和“注销”操作的应用程序。用户登录后,在注销时可能会在堆栈上留下任意数量的活动。
当用户注销时,我希望重置所有应用程序状态。我清除了我的磁盘缓存和首选项,但仍然处于运行(暂停)活动状态。事实上,当用户再次登录时,我发现上次登录会话中的旧活动仍然存在于旧状态(我明白为什么会这样)。如何让整个应用程序重置/关闭/重启?
我看过一些关于使用startActivityForResult()
,onActivityResult()
来冒泡“注销”结果代码的帖子,导致每个活动依次关闭。这看起来很痛苦,我希望有更好的方法。
编辑:我尝试用各种标志开始“登录”活动无济于事,
loginIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
答案 0 :(得分:1)
,您可以将以下属性添加到您的活动中:
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>