2

違いは何ですか

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

System.exit(1);

私は両方がプロセスを殺すことを知っています。しかし、プロセスを強制終了すると、プロセスを再起動すると、以前の状態から開始されるという違いを感じました。しかし、私はそのようなエラーの背後にある技術的な詳細を知りたいです。

4

2 に答える 2

2

技術的には、このようなプロセスを強制終了すると、プロセスにSIG_TERMが送信され、ある程度正常にシャットダウンされます。System.exit(1)はJVMを終了します。を使用して、-9=SIG_KILLシグナルをプロセスに送信することもできます。

http://developer.android.com/reference/android/os/Process.html#sendSignal(int, int)

そして、これはプロセスをすぐに殺します。これらのいずれもお勧めしません。finish()の使用をお勧めします。私が考えることができる唯一の例外は、多くの子プロセスを生成している何かをしていて、ある時点でそれらをシャットダウンしたい場合です。

于 2013-03-11T06:05:48.927 に答える
1
System.exit(1);

通常、ゼロ以外のエラーステータスは、プログラムが異常終了し、

int id= android.os.Process.myPid();

ProcessOSプロセスを管理するためのツールです。

android.os.Process.killProcess(id);

指定されたPIDでプロセスを強制終了します。このAPIを使用すると、PIDに基づいてプロセスの強制終了をリクエストできますが、カーネルは、実際に強制終了できるPIDに標準の制限を課します。通常、これは、呼び出し元のパッケージ/アプリケーションを実行しているプロセスと、そのアプリによって作成された追加のプロセスのみを意味します。共通のUIDを共有するパッケージは、互いのプロセスを強制終了することもできます。

于 2013-03-11T05:56:22.940 に答える