重新认证在重新启动 - 安卓(Reauthenticate on restart - Android

2019-09-18 08:16发布

我需要重新验证用户凭据每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结果显示,但是当它完成的第一个活动的onRestart再次调用和LoginActivity再次打开。

我该如何处理这个问题?

Answer 1:

好吧,我用这个来解决这个问题:

    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后获取调用。



Answer 2:

直到从任何一个得到了很好的解决方案/建议可以试试这个。

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()


文章来源: Reauthenticate on restart - Android