在我的应用程序启动活动中,每次启动应用程序时我都需要检查三件事
我正在为数据库使用 Firebase ,因此每次使用启动应用程序时,我都要在 Datachange 上检查数据库,然后根据返回结果和以下案例区域将用户转到活动中:
//check if newer version is available (Step 1)
if (appVersionMatch) {
CheckLogin();
} else {
//Take user to appstore for app update
}
// (Step 2)
public void CheckLogin() {
if (userLogin) {
CheckUserExist()
} else {
//Show user Login activity
}
}
// (Step 3)
public void CheckUserExist() {
if (user.exist()) {
//Go To main Activity
} else {
//Go To Register activity
}
}
,此流程运行正常,但始终需要花费一些时间来检查所有这三件事。.我在想是否可以保存首次登录和帐户创建信息,因此无需再次进行检查,因此用户可以继续加快主要活动的速度,我尝试使用以下方法进行操作,但未按预期工作:
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE);
editor = pref.edit();
boolean isLoogenIn = pref.getBoolean("userLoginCheck", false);
答案 0 :(得分:1)
当使用以下方法从Firebase准备好数据时,第一次应将数据保存在SharedPreference中:
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE);
editor = pref.edit();
editor.putBoolean("userLoginCheck", false);
editor.commit();
然后,您可以通过以下方式获得下一次的偏好值:
boolean isLoogenIn = pref.getBoolean("userLoginCheck", true);
答案 1 :(得分:1)
这就是我使用SharedPreferences
的方式。
首先创建一个单独的类(我用它来保存其他信息,例如url,常量等。)在其中创建一个SharedPreferences
。
public class project_constants {
private static String PREF_NAME = "project_pref";
private static SharedPreferences getPrefs(Context context) {
return context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
}
public static boolean getUserLogin(Context context) {
return getPrefs(context).getBoolean("login", false);
}
public static void setUserLogin(Context context, boolean input) {
SharedPreferences.Editor editor = getPrefs(context).edit();
editor.putBoolean("login", input);
editor.apply();
}
现在,当用户登录时,您应该使用project_constants.setuserLogin(getApplicationContext,True);
。
现在,当您要检查用户是否已登录时,可以使用project_constants.getuserLogin(getApplicationContext);
,如果是,则该用户已登录,否则。