每次调用 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 再次打开。
我该如何处理?
好吧,我用这个来解决它:
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 之后不断被调用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)