0

在我的应用程序中,我有一个登录和注销机制。我想在用户按下注销按钮时清除任务堆栈,这样当他再次启动应用程序时,他将不得不再次登录。我在网上查了一下,大多数情况下人们都是用这个来完成的:

Intent i = new Intent(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
finish();

使用此代码会发生这种情况:

主页->登录活动(主启动器活动)[用户名和密码字段为空白]->单击注销->主页,然后当我这样做时:

从主页->启动应用程序(在登录屏幕中,用户名和密码仍然存在)->按返回按钮导航到主页->再次启动应用程序->用户名和密码已清除

编写注销功能的更好方法是什么?

4

2 回答 2

0

您可以将用户名和密码保存在共享首选项数据库中。当用户注销时,然后在同一键中清除数据库中的值。

如果用户直接退出应用程序而不注销检查用户名和密码是否已经存在,您可以将它们显示到编辑文本中。

保存在数据库中

    SharedPreferences settings = getSharedPreferences("DB_NAME", 0);
    SharedPreferences.Editor editor = settings.edit();
    editor.putString("user", username);
    editor.putString("pass", password);
    editor.commit(); 

从数据库中清除

    SharedPreferences settings = getSharedPreferences("DB_NAME", 0);
    SharedPreferences.Editor editor = settings.edit();
    editor.remove("user");
    editor.remove("pass");
    editor.clear();
    editor.commit();
于 2012-04-23T04:30:55.073 回答
0

覆盖 Application 类并创建一个公共字段(或使用 getter/setter 的私有字段)。

在应用程序类中:

public boolean loginDialogShown = false;

在登录对话框代码中:

MyApplication.loginDialogShown = true;

在活动中:

if (!MyApplication.loginDialogShown){ loginDialog.show(); }

http://www.devahead.com/blog/2011/06/extending-the-android-application-class-and-dealing-with-singleton/

于 2012-04-23T07:02:40.037 回答