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 が表示されましたが、終了すると、最初のアクティビティの 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;
    }

まあ、これは私が期待したものではありませんが、機能します。誰かがより良い解決策を見つけてくれることを願っています. onActivityResult の後に onRestart が呼び出され続ける原因。

于 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 に答える