0

複数のアクティビティを開くアプリがあります。

アクティビティ A -> アクティビティ B -> アクティビティ C

ログアウトして、開いているすべてのアクティビティを閉じたいです。これを行う方法を説明するさまざまなリンクを読みました。

ログアウト時にアクティビティ履歴スタックをクリアし、「戻る」ボタンでログインのみのアクティビティが開かないようにします

Android アプリケーションで実行中のすべてのアクティビティを閉じますか?

ただし、これに関する問題は、インテント フラグが API レベル 11 以降でのみ機能することです。API レベル 8 以上で利用できるようにしたいアプリがあります。私はそれがずっと前にあることを知っていますが、API レベル 8 でこれを達成するための最良の方法は何ですか?

それとも諦めて最低レベルを11にするべきですか?

4

4 に答える 4

2

インテント インテント = 新しいインテント(これ、LoginActivity.class); インテント.setFlags(インテント.FLAG_ACTIVITY_CLEAR_TOP); startActivity(インテント); ``

于 2014-01-19T10:02:34.917 に答える
0

「ログアウトして、開いているすべてのアクティビティを閉じたい」と言います。、Intent.FLAG_ACTIVITY_CLEAR_TOPはAPIレベル8で動作します。すでにストアにあるアプリにログアウト機能を組み込みましたが、正しく理解できれば1つの違いがあります。ログアウトはLoginActivityに移動し、ログアウトはプロセスなどを強制終了しませんこれは Android の概念に反します。とにかく、上記のようにこれを行うときにもこれを行うことができます:

  void logout() {
        Intent intent = new Intent(this, LoginActivity.class);
        intent.putExtra("finish", true);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
   }

そして、LoginActivity では、onCreate メソッドで "finish" ブール値を余分に検索して、そのアクティビティも終了できます。

@Override public void onCreate(Bundle state) {
    super.onCreate(state);
    if (getIntent().getBooleanExtra("finish", false)) finish();
}
于 2014-01-19T10:31:17.947 に答える
0

これを試しましたか?

   void signOut() {
        Intent intent = new Intent(this, HomeActivity.class);
        intent.putExtra("finish", true);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // To clean up all activities *not necessary*
        startActivity(intent);
        finish();
   }

この回答から

于 2013-09-12T22:05:27.977 に答える
0

アプリケーションの ProcessID を取得し、onDestroy() でそのプロセスを強制終了することができます。Thats it from this link How to force stop my android application programmatic?

int pid=android.os.Process.myPid();
android.os.Process.killProcess(pid);

startActivityForResult() と onActivityResult() を使用して、ここでユーザーの 1 人が語った代替手段を使用できます。API レベル 8 でも問題なく動作します。

このためには、使用する必要があります

 startActivityForResult() instead of startActivty. and onActivtyResult() for you work.
于 2014-01-19T10:12:41.673 に答える