首页 文章

数据已在Android 6(SharedPreferences)中缓存

提问于
浏览
3

我使用 SharedPreference 将用户 login 后的 username 保存到我的应用程序中,如果用户 logout 则使用 clear .

我会在 start app时检查该值,如果该值为null用户需要使用 login .

但是当我用 android 6.0 检查时:

Login (save username - Toast show not null) > Logout (remove username - Toast show null) > Remove App > Reinstall app > StartApp (not login - Toast show not null, this value is user that used => issue)

android < 6.0 不会发生此问题

这是我的代码:

应用程序中的init共享首选项:

public static SharedPreferences getPref() {
    return mInstance.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
}

检查登录:

if (App.getPref().getString("username", null) == null){
   //Login
}

登录成功后保存:

App.getPref().edit()
                                .putString("username", s.getLoggedInUser().getUsername())
                                .putString("profilePicUrl", s.getLoggedInUser().getProfilePicUrl())
                                .putString("pk", s.getLoggedInUser().getPk())
                                .apply();

注销时清除:

App.getPref().edit().clear().apply();

1 回答

  • 1

    这是因为自动备份 . 介绍在棉花糖 .

    它将进行数据备份并在重新安装时使用该备份 .

    If you want to turn off it from settings -> Backup & reset -> automatic restore

    enter image description here

    但对于你的应用程序,我建议共享pref .

    使用键“username”在注销和提交时为null .

    或者简单地说

    你的Manifest中的android:allowBackup =“false”

相关问题