9

system.exit(0) は使用しないでください。私は多くのチュートリアルを読んだだけでなく、アプリケーションの終了には推奨されず、finish() がより良い代替手段である理由を述べていますが、非常にまれなケースですが、この汚い回避策が私の主な質問よりも使用されている場合、 それは Android デバイスまたはその他の側面に害を及ぼす可能性があります使用されている場合のデバイスの?

4

3 に答える 3

10

短い答え:いいえ。

長い答え:いいえ、デバイスやデバイスのあらゆる側面に害を及ぼすことはありません。アプリをメモリから削除し、使用されているすべてのリソースをクリーンアップするだけです。開いているファイルがある場合、それらは破損する可能性がありますが、ファイルシステムは破損しません。Androidは、その時点で使用しているすべてのリソース(GPS、WiFiなど)を解放する必要がありますが、それらは未定義の状態になる可能性があります。の効果をアプリのクラッシュと比較してSystem.exit()ください。デバイスにも影響しません。

于 2012-06-29T07:17:00.673 に答える
1

デバイスに害を及ぼすことはありません。唯一注意が必要なのは、非同期インテントブロードキャスト/受信アーキテクチャにより、Androidがアプリをすぐに復活させることができるということです。アプリのアクティビティがリッスンするものをブロードキャストしたとしましょう。そして、あなたは終了します。しかし、Androidは、ブロードキャストを処理するためにアプリを復活させます。

于 2012-06-29T07:22:23.137 に答える
1

System.exit(0)次の理由により、アプリケーションの「メイン」メソッド以外の場所で呼び出すことはお勧めしません。

  1. コードを再利用することは障害です。

  2. ユニットテストが難しくなります。たとえば、一部のテストでエラー処理が実行されたときにコードがSystem.exitを呼び出すと、が発生するとテストが終了しSystem.exit(0)ます。

于 2012-06-29T07:09:11.777 に答える