Androidのメモリが不足している場合、およびOSがメモリを再請求するために必要な手順について、一貫性のないドキュメンテーションとディスカッションが行われています。具体的には、Androidはアクティビティ/フラグメント、またはプロセス全体の細かさで殺すのでしょうか?Androidのメモリ管理細分性 - アクティビティまたはプロセス?
たとえば、アクティビティBがアクティビティAの前で起動されていて(両方のアクティビティが同じアプリケーション/プロセスの一部である場合)、アクティビティBはフォアグラウンドにあり、ユーザはアクティビティBとやりとりする(想定:画面はオンのままで、現在のアプリはフォアグラウンドのままで、向きは変わらない)
2011年からのこのSO answer(GoogleのAndroidチームのDianne Hackbornによる)は、Androidがプロセスではなく、プロセスであるにもかかわらず殺すことを示しています。 Recreating an ActivityのAndroidデベロッパーページで
、それは言う:
それが現在停止していますし、長い時間の中で使用したり、フォアグラウンドの活動はそれほど多くのリソースを必要とされていない場合、システムはまた、あなたの活動を破壊する可能性システムはバックグラウンドプロセスをシャットダウンしてメモリを回復する必要があります。
"システムはバックグラウンドをシャットダウンする必要があります処理"に注意してください。 onSaveInstanceState用Androidデベロッパーページで
、それは言う:たとえば
、アクティビティBはアクティビティAの前に起動され、いくつかの点の活動でAが資源を再利用するために殺されている場合、活動の意志この方法でユーザーインターフェイスの現在の状態を保存する機会があります
これらのページや他の多くのドキュメントページやオンラインディスカッションを読んだ後、正解が何であるかは不明です。
私はフラグメントに関しても同じ質問をしています:バックグラウンドのあるフラグメントは、プロセス全体が強制終了されることなく、メモリが足りなくなって殺される可能性がありますか?
でセクションの「oom_adjと上位プロセスの重要性との関係を」本の簡単な分析を発見しました。 Linuxは活動の概念を持っていないことは分かっていますが、Androidが個々の活動を殺す能力を追加したかどうかはわかりませんでした。明確にしてくれてありがとう! –