2

每次调用 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。

我该如何处理?

4

2 回答 2

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 之后不断被调用。

于 2012-06-21T19:39:08.740 回答
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()
于 2012-06-21T18:36:22.800 回答