2

Androidアプリケーションでsystem.exit(0)を使用することは推奨されていないことは知っていますが、その時点でアプリケーションを強制終了できるので、onDestroy()で使用しても大丈夫かどうか疑問に思いました。

私が尋ねている理由は、この質問に関連しています。

4

4 に答える 4

4
  • onDestroy呼び出されることに依存しないでください。OSがを呼び出さずにアプリケーションを強制終了する状況がありますonDestroy

もちろん、シナリオに直接当てはまらないので、一言アドバイスします。アプリがすでに強制終了されているために呼び出されなかった場合system.exit(0)は、大丈夫だと思います。;-)

  • が呼び出された場合Activity.onDestroy、それはプロセスが2つの状態のいずれかにあることを意味します。

--OSが認識しているアプリで実行されている他のコンポーネント(Serviceまたは)はありません。ContentProviderこれは、プロセスがOSによってすぐに強制終了される可能性が高いこと、またはシステムの他の部分や他のアプリが物理メモリを必要とする場合に最初に再利用されることを意味します。したがって、呼び出しexit(0)はあまり達成されません。

-システムが認識しているプロセスで実行されている別のコンポーネントがあります。この場合に呼び出すexit()と、プロセスが終了し、他のコンポーネントが強制終了され、データが破損する可能性があります。もちろん、OSはそれほど気にしないかもしれませんが、ユーザーはそれを高く評価しないかもしれません。:-)

  • 他のアプリケーションが内部のDalvikヒープ制限を使い果たした場合、プロセスを自発的に強制終了しても、他のアプリケーションには役立ちません。デバイスに搭載されている物理メモリの量に関係なく、OSには、ヒープ割り当てのプロセスでDalvikが使用できるメモリの量に制限があります。したがって、システムのメモリの半分が空いていて、特定のアプリケーションがまだOOMにヒットしている可能性があります。

Dalvikヒープ制限はOEMで構成可能ですが、実際にデバイスに合わせて調整する努力をしているOEMはほとんどなく、OSのデフォルトを使用しています。特定のデフォルトは覚えていませんが、各アプリはローエンドのフローズンヨーグルト/ジンジャーブレッドで16MBからハイエンドのICS/JB電話で48MBまで許可されていると考えて間違いありません。ちなみに、私は楽観的で、上限を128MBに上げます(そのようなデバイスについてはまだ聞いたことがありませんが)。:-)

  • アプリケーションでメモリ使用量に問題があり(リンクされた質問によって暗示される)、アクティビティの次の開始時に「クリーンな」スレートを強制することで問題を解決しようとしている場合、このアプローチは機能します。すこし。ただし、アプリケーションがアクティビティのみを使用している限り、機能します。ContentProviderまたはをスローした瞬間、(前述のように)もうService呼び出す余裕がなく、問題を適切に解決する必要があります。exit()弾丸を噛んで今すぐやったほうがいいでしょう。Bitmap.recycle()最も簡単なアプローチは、特定のビットマップを使い終わったときに確実に呼び出しを行うことです。もちろん、メモリよりも多くのビットマップをメモリに保持する必要がない限り、これは機能しますが、とにかく、それは完全に別の獣です。:-)
于 2012-12-30T17:19:51.357 に答える
3

sytem.exit(0)を呼び出さないでください。Androidにアプリケーションを管理させてください。メモリリークの問題があることを理解している場合。ビットマップのせいだと思います。したがって、ビットマップを効率的に表示するためにこれを見てくださいhttp://developer.android.com/training/displaying-bitmaps/index.html

onDestroy()メソッドでsystem.exit(0)を呼び出すと、横向きと縦向きを切り替えることができなくなります。

于 2012-12-30T17:14:03.070 に答える
1

ショートカットソリューション:アプリの使用が終了したら、アクティビティでSystem.exit(0)ではなくfinish()を呼び出します。

適切な方法は、アプリでのビットマップの使用を最適化することです。こちら
のhttp://developer.android.com/training/displaying-bitmaps/index.htmlをご覧ください

于 2012-12-30T17:36:54.930 に答える
0

次のようなオプションを確認することをお勧めします:http: //developer.android.com/reference/android/app/Application.html#onLowMemory%28%29

于 2012-12-30T17:17:18.117 に答える