我们在做手机客户端的时候,登录成功了之后,需要把账户信息保存下来。下次打开就没必要再进入登录界面了,而应该实现自动登录,让用户直接进入数据展示主界面。大致思路如下:
1、在登录的模块中,如果登录成功,那么就会有成功后的执行方法,我们在此方法中把账户信息,如userId,userName,passWord通过shareprefrence或者数据库保留到本地。同时,还需要保留一个标志位KEY_SKIP_LOGIN,存一个布尔值,用来判断是否登录成功过,下次登录的时候可判断此标志位决定是否直接进入主界面。
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getContext());
sp.edit().putInt(USERID, userId).apply();
sp.edit().putString(USERNAME, username).apply();
sp.edit().putString(PASSWORD, password).apply();
sp.edit().putBoolean(KEY_SKIP_LOGIN_PAGE,true).apply();//把是否自动跳过登录界面设置为true,下次打开应用的时候就不需要再停留在登录界面,而由登录界面直接跳到MainActivity
2、登录成功后,下次打开应用的时候,判断KEY_SKIP_LOGIN_PAGE的值为true,直接从登录界面调到主界面。
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getContext());
if (sp.getBoolean(KEY_SKIP_LOGIN_PAGE, false)) {
Intent intent = new Intent(getContext(), MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getActivity().startActivity(intent);
}
3、上面两种情况都要进入主界面,进入主界面之后,我们需要从远程服务器获取数据,第一次获取服务器数据的时候我们需要再对账号和密码做一次验证,如果验证失败,那么需要退到登录界面,同时KEY_SKIP_LOGIN_PAGE设置为false;验证成功,那么继续正常显示数据。
if (isFirstLoad){
presenter.autoLogin(userName,password);
isFirstLoad = false;
}
showAutoLoginFail() {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
sp.edit().putBoolean(KEY_SKIP_LOGIN_PAGE,false).apply();//这里把自动跳过登录界面的标志位置为false
Intent intent = new Intent(this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();
}