違いは何ですか
int id= android.os.Process.myPid();
android.os.Process.killProcess(id);
と
System.exit(1);
私は両方がプロセスを殺すことを知っています。しかし、プロセスを強制終了すると、プロセスを再起動すると、以前の状態から開始されるという違いを感じました。しかし、私はそのようなエラーの背後にある技術的な詳細を知りたいです。
技術的には、このようなプロセスを強制終了すると、プロセスにSIG_TERMが送信され、ある程度正常にシャットダウンされます。System.exit(1)はJVMを終了します。を使用して、-9=SIG_KILLシグナルをプロセスに送信することもできます。
http://developer.android.com/reference/android/os/Process.html#sendSignal(int, int)
そして、これはプロセスをすぐに殺します。これらのいずれもお勧めしません。finish()の使用をお勧めします。私が考えることができる唯一の例外は、多くの子プロセスを生成している何かをしていて、ある時点でそれらをシャットダウンしたい場合です。
System.exit(1);
通常、ゼロ以外のエラーステータスは、プログラムが異常終了し、
int id= android.os.Process.myPid();
Process
OSプロセスを管理するためのツールです。
android.os.Process.killProcess(id);
指定されたPIDでプロセスを強制終了します。このAPIを使用すると、PIDに基づいてプロセスの強制終了をリクエストできますが、カーネルは、実際に強制終了できるPIDに標準の制限を課します。通常、これは、呼び出し元のパッケージ/アプリケーションを実行しているプロセスと、そのアプリによって作成された追加のプロセスのみを意味します。共通のUIDを共有するパッケージは、互いのプロセスを強制終了することもできます。