java - Android Java共享首选项逻辑问题

标签 java android

Android Java sharedPreferences 逻辑问题

我有一个可以登录和注销的应用。

我希望,当用户第一次下载应用程序时,它会注销。然后,当他使用按钮登录时,会保存一个 sharedPreference 值。现在,下次他打开应用程序时,它会自动让他登录。假设他注销然后关闭应用程序,所以现在当他打开应用程序时,它会把他注销。这就是大多数应用程序的运行方式。

我做了什么,在第一次 Activity 时我添加了这个

    SharedPreferences SiggnedIn = getSharedPreferences("YesOrNo", Activity.MODE_PRIVATE);
    SharedPreferences.Editor editor = SiggnedIn.edit();
    editor.putBoolean("SiggnedIn?", false);
    editor.commit();

然后当用户单击退出按钮时

                            SharedPreferences SiggnedIn = getSharedPreferences("YesOrNo", Activity.MODE_PRIVATE);
                            SharedPreferences.Editor editor = SiggnedIn.edit();
                            editor.putBoolean("SiggnedIn?", false);
                            editor.commit();

如果他点击登录

                                 SharedPreferences SiggnedIn = getSharedPreferences("YesOrNo", Activity.MODE_PRIVATE);
                                 SharedPreferences.Editor editor = SiggnedIn.edit();
                                 editor.putBoolean("SiggnedIn?", true);
                                 editor.commit();

最后,如果我有一个每秒更新所有内容的方法。

所以我在其中添加

            SharedPreferences SiggnedIn = getSharedPreferences("YesOrNo", Activity.MODE_PRIVATE);
            boolean myIntValue = SiggnedIn.getBoolean("SiggnedIn?", false);

            if(myIntValue){
                SignHimIn();
            }

那是行不通的。

最佳答案

这不应该起作用,因为每次启动应用程序时,您都会将 SignggnedIn? 覆盖为 false。

SharedPreferences SiggnedIn = getSharedPreferences("YesOrNo", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = SiggnedIn.edit();
editor.putBoolean("SiggnedIn?", false);
editor.commit();

我建议使用 SharedPreferences 的另一个键来确定应用程序是否是首次启动。

SharedPreferences SiggnedIn = getSharedPreferences("YesOrNo", Activity.MODE_PRIVATE);

if (SiggnedIn.getBoolean("APP_LAUNCHED_FIRST_TIME", true)) {
    SharedPreferences.Editor editor = SiggnedIn.edit();
    editor.putBoolean("APP_LAUNCHED_FIRST_TIME", false);
    editor.commit();

    //For the first time, user should be signed out
    editor.putBoolean("SiggnedIn?", false);
    editor.commit();
}

然后在Activity启动中,检查用户是否登录。

if (SiggnedIn.getBoolean("SiggnedIn?", false)) {
    SignHimIn();
}

其余登录注销逻辑正常。我假设您是通过单击 Button 来执行此操作的。

关于java - Android Java共享首选项逻辑问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24023893/

相关文章:

android - Firebase 在 Android 中使用子数据检索父数据

java - 无法停止 Kerberos 调试日志记录

安卓工作室 : how to see a list of all warnings?

java - 从前台服务更新 Singleton 成员属性

java - Eclipse - 如何打开 sql 文件?

android - MODE_IN_CALL、MODE_IN_COMMUNICATION、MODE_CALL_SCREENING 有什么区别?

android - Android 列表中的 ArrayIndexOutOFBoundsException

java - Ehcache 2.10.6 命中统计数据未增加

java - Java中解析/proc/mounts

java - Play Framework 2.3.1 内部类中的 Promise 异常处理