正确检查用户是否已登录.Android



我的登录设置是这样的,我使用改装从服务器进行身份验证,我使用令牌api身份验证:

在创建的MainActivity.java方法中

apiInterface = ApiClient.getClient().create(ApiInterface.class);
User user = SharedPreferencesHelper.getUser(MainActivity.this);
if (user.getToken() == null) {
Intent login = new Intent(MainActivity.this, LoginActivity.class);
startActivity(login);
} else {
setContentView(R.layout.activity_main);
buildMain();
}

在创建的LoginActivity.java方法中(我总结一下,代码很长(

loginbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//get login ingo
Login login = new Login(scardI, passwordI, device_name);
Call<User> call = apiInterface.LoginUser(login);
call.enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
if (response.isSuccessful()) {
User user = response.body();
//save user info into SharedPreferences
SharedPreferencesHelper.setUser(LoginActivity.this, user);
//check if user saved correctly by getting the user token
if (SharedPreferencesHelper.getUserToken(LoginActivity.this) != null) {
finish();
}
} else {
//show error message
}
}
@Override
public void onFailure(Call<User> call, Throwable t) {
//show error message
}
});
}
});

我遇到了一个问题,在用户登录后,会显示一个空白页面而不是activity_main.xml,但当我关闭应用程序并重新打开它时,它会像预期的那样直接进入activity_main.xml。登录后,我没有像预期的那样进入activity_main,这是有原因的吗。

成功时缺少对MainActivity.java的意图。由于调用了finish((,将显示一个空白屏幕。

if (response.isSuccessful()) {
User user = response.body();
SharedPreferencesHelper.setUser(LoginActivity.this, user);
if (SharedPreferencesHelper.getUserToken(LoginActivity.this) != null){
Intent i = new Intent(this, MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK)
startActivity(i);
}
} 

最新更新