【发布时间】:2018-06-12 09:04:23
【问题描述】:
我为登录屏幕上的“记住我”操作创建了一个类。我将用户数据存储在SharedPreferences 上。在 Android Studio 上进行调试时它正在工作。我在build.gradle 文件上更改versionCode 和versionName。一切正常,SharedPreferences 数据可用。但是当我从 Google Play 商店更新时,我的数据正在删除。谢谢你的回答。
RememberMe.java : getLastUser() 返回模型的变量为空。
public class RememberMe {
private SharedPreferences sharedPreferences;
private SharedPreferences.Editor sharedEditor;
public static int USERNAME_AND_PASSWORD = 0,
USERNAME = 1;
public RememberMe(Context context) {
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
sharedEditor = sharedPreferences.edit();
}
/**
* @param userIdentity Example; username, email.
* @param userPassword
* @param isLastUser If this value is true 'getLastUser' function will get this user.
*/
public void addUser(String userIdentity, String userPassword, boolean isLastUser){
// Save user.
sharedEditor.putString(userIdentity, userPassword);
// Make last user.
if (isLastUser){
sharedEditor.putString("remember_me_last_user", userIdentity);
}
// Commit
sharedEditor.apply();
}
@Nullable
public String getUserPassword(String userIdentity){
return sharedPreferences.getString(userIdentity, null);
}
public RememberMeModel getLastUser(int resultType){
if (resultType == USERNAME_AND_PASSWORD){
return new RememberMeModel(
sharedPreferences.getString("remember_me_last_user", null),
getUserPassword(sharedPreferences.getString("remember_me_last_user", null))
);
}
return new RememberMeModel(
sharedPreferences.getString("remember_me_last_user", null),
null
);
}
}
在 manifest.xml 中
android:allowBackup="true"
android:fullBackupContent="true"
在 build.gradle 中
android {
compileSdkVersion 27
defaultConfig {
applicationId "com.oka.okaoka"
minSdkVersion 19
targetSdkVersion 27
versionCode 8
versionName "v1.0.8"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
targetCompatibility 1.8
sourceCompatibility 1.8
}
}
【问题讨论】:
-
使用 sharedEditor.commit();安装 sharedEditor.apply();
-
@AD10 这不会解决问题。
-
@AD10 你确定吗?因为尝试会很长。我知道; “应用”函数只能异步工作,不能返回值。
标签: android android-studio login sharedpreferences android-manifest