1

我有一个具有“登录”和“注销”操作的应用程序。用户登录后,在他们注销时,堆栈上可能会留下任意数量的活动。

当用户注销时,我希望重置所有应用程序状态。我清除了我的磁盘缓存和首选项,但仍有状态正在运行(暂停)活动。事实上,当用户再次登录时,我发现上一次登录会话中的旧活动仍然以其旧状态存在(我当然明白为什么会这样)。我怎样才能使整个应用程序重置/关闭/重新启动?

我看过一些关于使用startActivityForResult(),onActivityResult()冒泡“注销”结果代码的帖子,导致每个活动依次关闭。这看起来很痛苦,我希望有更好的方法。

编辑:我尝试使用各种标志启动“登录”活动无济于事,

loginIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
4

1 回答 1

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>
于 2012-06-26T00:31:15.663 回答