28

closeButton をクリックしたときに、Android アプリケーションを強制的に停止したいと考えています。これは私のコードです。

protected void onCreate(Bundle savedInstanceState) {

  this.setContentView(R.layout.layoutxml);

  this.closeButton = (Button)this.findViewById(R.id.close);

  this.closeButton.setOnClickListener(new OnClickListener() {

    @Override

    public void onClick(View v) {

      finish();

    }

  });

}

これで私のアプリケーションは終了です。に移動するとSettings -> Applications -> Manage applications -> <my application name>、[強制停止] ボタンが有効になっていることがわかります。これは、アプリケーションが完全に停止されなかったということですか?

Android アプリケーションを完全に終了し、[設定] の [強制停止] ボタンを無効にするにはどうすればよいですか? 私の限られた経験から、アプリケーションで「例外」(例: NullPointerException) が発生すると、アプリケーションが異常停止し、完全に終了したように見え、「強制停止」ボタンが無効になっているように見えます。

4

7 に答える 7

48

別の方法は

android.os.Process.killProcess(android.os.Process.myPid());

これらの呼び出しをに入れれば、これを行うのはそれほど悪いことではないと思いますonDestroy()。(イベント処理の途中でプロセスを強制終了すると、タッチフォーカスがエーテルに入るなど、あらゆる種類の悪いことが発生する可能性があります。)

それでも、ベストプラクティスから逸脱するには、説得力のある理由が必要です。それは、必要なfinish()ときに/必要に応じて、OSに呼び出してプロセスの強制終了を任せることです。

于 2011-02-24T05:39:40.517 に答える
13

注:これはアプリ全体を強制終了するわけではありませんが、すべてのアプリ アクティビティを終了したい場合は、これが最適なオプションです。

アンドロイド≧16

finishAffinity();

アンドロイド < 16

ActivityCompat.finishAffinity(Activity activity)

お役に立てれば

于 2015-12-17T16:54:55.987 に答える
8

アプリケーションを強制終了する悪い方法は、System.exit(0)

編集:説明が必要だと思います。Android は独自にアプリケーションのライフサイクルを処理します。それを「強制的に閉じる」ことは想定されていません。それを行う良い方法がわかりません。通常、アプリケーションがまだバックグラウンドで動作している場合は問題ありません。このようにして、ユーザーがアプリケーションを再度起動すると、すぐにポップアップします。

于 2011-02-24T05:29:36.430 に答える
0

短くてシンプル

Intent homeIntent = new Intent(Intent.ACTION_MAIN);
homeIntent.addCategory( Intent.CATEGORY_HOME );
homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(homeIntent);
于 2020-07-22T11:08:40.343 に答える