每次调用onRestart时我都需要重新验证用户凭据(通常这意味着用户已锁定并解锁屏幕或将其放在背景上然后返回到它)。
所以我做到了:
@Override
protected void onRestart() {
super.onRestart();
Intent intent = new Intent(this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(LoginActivity.REAUTHENTICATE);
startActivity(intent);
}
这很有效,显示了LoginActivity,但是当它完成时,第一个Activity的onRestart再次被调用,LoginActivity再次被打开。
我该如何处理?
答案 0 :(得分:2)
好吧,我用它来解决它:
private static final int REAUTHENTICATE = 80;
private boolean authenticated;
@Override
public void onRestart() {
if(authenticated)
return;
Intent intent = new Intent(this, LoginActivity.class);
intent.setAction(LoginActivity.REAUTHENTICATE);
startActivityForResult(intent, REAUTHENTICATE);
}
@Override
public void onStop() {
authenticated = false;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == REAUTHENTICATE)
authenticated = true;
}
嗯,这不是我的预期但是有效,我希望有人找到更好的解决方案。导致onRestart在onActivityResult之后继续被调用。
答案 1 :(得分:1)
在得到任何人的好解决方案/建议之前,可以试试这个。
1- Put a boolean variable in shared pref named AuthentacationNeeded
2- get that in OnRestart with default value true
3-if value is true then only startActivity
4- put that variable true in onpuase
in Login activity
4- put that variable false Before finish()