4

コードで Android アプリを終了する方法を探しています。はい、私はこれを行うべきではありません。これは、戻るボタンを押したときに android が処理するためですが、これを実装するように強制するカスタマイズされたフローがあります。私はすでにしばらく探していて、複数の答えを見つけました:

  • やるべきではない=>オプションはありません。
  • 私のアクティビティでfinish()を呼び出します=>アプリ全体ではなく、1つのアクティビティに対してのみ。
  • 特別なフラグを使用して最初のアクティビティへのインテントを開始します => 複数のエントリポイントがあるため、実際にはオプションではありません。
  • 自分のプロセスを強制終了するだけです => これについてはわかりません。これはすべてのアクティビティで onDestroy() メソッドを呼び出しますか? また、バックグラウンド サービスはこれで実行し続けますか? (止めてはいけないもの)

だから、アプリを終了する他のオプションはありますか、それともこれらのオプションに本当に制限されていますか? 他に選択肢がない場合は、Application クラスでアクティビティのすべてのインスタンスのリストを作成し、それらをループしてそれらに対して finish() を呼び出すことを考えていました。しかし、これがこれを処理する正しい方法になるかどうかはわかりません。

そのため、ここで質問します。アプリを閉じるにはどの方法が最適ですか?

編集:私は多かれ少なかれ問題を修正しました。アクティビティの WeakReference のリストがあります。すべての onCreate で、アクティビティをリストに追加します。次に、アプリを終了したいときは、リストをループして finish() を呼び出します。問題は:リストが大きくなりすぎると、アンドロイドがすでにそれらを破壊しているため、すべてのアクティビティが終了しません。だから、もう必要ないと確信するたびに、それらを終わらせます。私の場合、リストはアクティビティの 3/4 よりも大きくなることはないので、アクティビティが完了しないことを心配する必要はもうありません。また、この方法では、自分のプロセスを破棄する必要はありません。

4

4 に答える 4

3

以下のコードを使用します。

android.os.Process.killProcess(android.os.Process.myPid());
    System.runFinalizersOnExit(true);
于 2012-03-02T11:25:52.967 に答える
3

これを行うべきではありませんが、とにかく主張する場合:

System.exit(0);
于 2012-03-02T11:20:13.723 に答える
0

推奨されませんが、それでも使用できます。アプリを終了する必要がある場合に備えて、このソリューションを使用することをお勧めします.

私によると、最善の解決策は、以下のようにアプリ内のすべてのアクティビティを終了することです。

step1) メインアクティビティで静的変数を維持します。

public static isQuit = false;

step2) ボタンのクリック イベントで、この変数を true にします。

 mainactivity.isQuit = true;

step3) そして、あなたのアプリケーションのすべてのアクティビティには、以下のような onrestart メソッドがあります..

 @Override
      protected void onRestart() {
         // TODO Auto-generated method stub
         super.onRestart();
        if(mainactivity.isQuit)
            finish();
    }
于 2012-04-12T13:03:42.663 に答える
-1

開始されたすべてのアクティビティのリストを List に保持できます (メモリ リークを避けるために WeakReference を使用します)。アプリを終了するには、最初に各アイテムで終了メソッドを呼び出し、次に android.os.Process.killProcess(android.os.Process.myPid()); を呼び出します。

于 2012-03-02T11:41:24.177 に答える