Android:注销时清除所有 Activity 的完美方法?

标签 android

我的应用程序中的所有 Activity 都有注销按钮,用户可以从任何 Activity 中注销。我想将用户发送到登录 Activity 而不显示以前的 Activity 。为此,我正在使用:

以下是注销方法删除session

public void logoutUser() {
    //clearing all data from sharedPreferences
    editor.clear();
    editor.commit();
    Intent intnt = new Intent(contxt, LoginActivity.class);
    // Closing all the Activities
    intnt.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    // Add new Flag to start new Activity
    intnt.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK );
    // Staring Login Activity
     contxt.startActivity(intnt);

}

当用户单击注销按钮然后调用注销方法时,来自第二个 Activity 。我的第二个 Activity 类扩展了 SherlockFragmentActivity。

public void Logout(MenuItem v) {
    sessionMngr.logoutUser();
}

当我按下注销按钮时,我进入了登录屏幕,但是当我按下设备上的后退按钮时,它显示了之前的 Activity ——当我在登录屏幕上按下后退按钮时,我应该进入 Android 主屏幕。

我在 stackoverflow 上看到了一些问题,但没有实现我的目标。有人说我在 list 文件中使用 android:noHistory="true"但是当我在第三个 Activity 中并按下它显示 android 主屏幕的按钮时会发生什么,但它应该转到第二个 Activity 。我也尝试了 FLAG_ACTIVITY_NO_HISTORY 但这也没有实现我的目标。

我不明白我哪里错了。请问有没有人有解决办法。

提前致谢

最佳答案

尝试指定这两个:

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);

同样为了安全起见,在开始此 Activity 后调用 finish()。

关于Android:注销时清除所有 Activity 的完美方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16412646/

相关文章:

java - Android map v2 仅在首次推出时有效

java - 将 arraylist 中的每个值显示到每个 textView Android

java - android中的聊天应用程序,以便发送者和接收者消息应该在不同的一边

Android Bitmap/Drawable mask

android - 如何在重新安装或更新时从 Android 应用程序中删除共享首选项文件?

android - 闪光手电筒功能无法通过 Nexus 5 中的应用程序小部件运行

java - 如何让动态字符串出现在我的 View 中?

java - 在父类(super class)构造函数中将 'this' 转换为子类

android - 向上滚动 CollapsingToolbarLayout 时移动 FloatingActionButton

安卓通话录音功能