この方法を使用することは「良くない」、使用すべきではない、アプリケーションを「閉じる」ための正しい方法ではなく、Androidの動作方法でもないという投稿をいくつか読んだことがあります...
私は、Android OSがプロセスを終了する適切なタイミングであるときに私よりもよく知っているという事実を理解し、受け入れますが、このkillProcess()
方法を使用することが間違っている理由についての適切な説明をまだ聞いていません。結局のところ、これはAndroidAPIの一部です。
私が知っていることは、他のスレッドが潜在的に重要な作業(ファイルの操作、DBへの書き込み、HTTPリクエスト、サービスの実行など)を実行しているときにこのメソッドを呼び出すと、スレッドが終了し、明らかに良くないということです。killProcess()
また、アプリが最後に使用されたときからシステムがメモリ状態を「保持」し、それを防ぐため、アプリケーションを「再度開く」ことがより高速になるという事実から利益を得ることができることを私は知っています。
この理由以外に、そのような操作がなく、アプリケーションを開くたびに最初から起動するかどうかを気にしないと仮定すると、このkillProcess()
方法を使用しない理由は他にもありますか?
finish()
を閉じる方法を知っているActivity
ので、それを答えに含めないでください。
finish()
すべてのアプリケーションではなく、専用でActivity
あり、それを使用する理由と時期を正確に知っていると思います。
そしてもう1つ、Unity3Dフレームワークを使用してゲームを開発し、プロジェクトをAndroidにエクスポートしています。生成されたapkを逆コンパイルしたとき、Unityから作成されたJavaソースコード(Unityの-Application.quit()
メソッドを実装している)を見つけて非常に驚きましたProcess.killProcess(Process.myPid())
。
Application.quit()
Unity3Dドキュメントによるとゲームを閉じる正しい方法であると思われます(本当にそうですか?多分私は間違っていて何かを逃したかもしれません)、なぜUnityのフレームワーク開発者はネイティブAndroidでこれを実装したのですか?