重新启动时重新验证-Android
我需要在每次调用onRestart时重新验证用户凭据(通常这意味着用户已锁定并解锁屏幕或将其置于后台,然后返回到屏幕) 所以我这样做了:重新启动时重新验证-Android,android,android-activity,lifecycle,android-lifecycle,activity-lifecycle,Android,Android Activity,Lifecycle,Android Lifecycle,Activity Lifecycle,我需要在每次调用onRestart时重新验证用户凭据(通常这意味着用户已锁定并解锁屏幕或将其置于后台,然后返回到屏幕) 所以我这样做了: @Override protected void onRestart() { super.onRestart(); Intent intent = new Intent(this, LoginActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); int
@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,但当它完成onRestart时,会再次调用第一个活动,并再次打开LoginActivity
我该如何处理呢?在从任何人那里得到一个好的解决方案/建议之前,都可以尝试一下
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()
我用这个来解决这个问题:
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之后继续被调用。应该有一些变量来获取用户是否已通过身份验证…意味着某些变量好像它的会话有效?Dheeresh,有一个标志指示它,但客户端希望用户在重新启动时完全重新验证。使用startActivityForResult,在打开LoginActivity之前调用onActivityResult(就在onRestart之后)当前活动是否具有启动模式单个实例?好的,这应该可以工作。但这是一个丑陋的解决方案,我使用了另一个解决方案(也不好)我回答了这个问题,这就是解决方案我在之前的评论中也建议,但你说“使用startActivityForResult,onActivityResult在打开LoginActivity之前(在重新启动之后)被调用):(他们这样做了,但没有新的任务,他们不会这么做)^^