1

基本的に、私のアプリには loginScreen があり、一度ログインすると、多くのアクティビティを実行できます。ホームボタンを押すとアプリがバックグラウンドになり、ユーザーが一定時間内にアプリを開かない場合、ユーザーセッションが閉じて loginScreen に戻ります。今問題は、セッションの有効期限が切れたときに loginScreen からアプリを閉じたい場合、戻るキーを押すと閉じるはずですが、閉じないことです。スタック内の前の要素に移動します。

有線のことは、すべての onBackPressed() メソッドで、新しいインテントを開始するたびに常に使用intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); し、loginScreen onBackPressed()finish() で呼び出しますが、機能しません。誰かが理由を知っていますか?どうすればこの問題を解決できますか。

助けてくれてありがとう!!!

多くのアクティビティのコード スニペット:

@Override
    public void onBackPressed() {
        mpButtonClick.start();
        Intent intent = new Intent(this, MenuPagina.class); 
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
        startActivity(intent); 
        super.onBackPressed(); 
    }

loginActivity で:

@Override
    public void onBackPressed() {
        super.onBackPressed();
        getIntent().setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        LoginActivity.this.finish();
    }
4

3 に答える 3

4

これは2つの方法で実行できます。

  1. android.os.Process.killProcess(android.os.Process.myPid());バックプレスで使用してアプリを強制終了します。

このためには、マニフェストに以下の権限を追加する必要があります。

<uses-permission
        android:name="android.permission.KILL_BACKGROUND_PROCESSES" />

2。static boolean'isKill'変数をデフォルトのfalseで使用し、ログインアクティビティのoncreate()メソッドで毎回falseを設定します。

ログインアクティビティonBackPress()メソッドでisKill値をtrueに設定します。

そして、すべてのアクティビティonResume()メソッドに以下のコードを記述します

if(isKill)
{
    finish();
}
于 2012-05-03T09:13:57.180 に答える
0

BackStackに含めたくないアクティビティを開始するときは、次のようにします。

myintent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

onBackPressed()が呼び出されないことについて(ここのどこかで)読んだことがありますが、代わりにonKeyPressedを使用して、戻るボタンを指定しました。例を見つけることができるかどうかを確認します。

次に例を示します 。Android-onBackPressed()が機能しない

于 2012-05-03T09:10:44.753 に答える