java - 正确检查用户是否登录。 Android
问题描述
我有这样的登录设置,我使用改造从服务器进行身份验证,并且我正在使用令牌 api 身份验证:
在 MainActivity.java 方法 onCreate
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方法上create(我总结一下,代码挺长的)
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);
}
}
推荐阅读
- github - 本地 Jekyll 存储库克隆显示来自 Github 托管页面的不同输出
- node.js - 使用 SuperTest 的 Mocha 测试始终通过(即使错误)
- java - 旋转 HBox 中的每个 ImageView
- c# - 如何将命中点改为十字准线?
- c# - Automapper - 获取解析器中的所有条目
- git - 我在我的 CPanel 中找不到 Git 版本控制界面。非常需要它进行自动部署
- javascript - 如何使用 JavaScript/reactjs 检测 android 后点击?
- javascript - vue.js 组件在对另一个组件执行 vuex 操作后未更新
- python - 如何使用 pscp 将在 python 脚本中创建的文件复制到需要密码的远程服务器?
- c# - 无法从模型中引用 asp:HIddenField