誰かが、次のことに関する具体的で信頼できる(そしてできれば簡潔な)情報の方向に私を押してくれませんか?
コンポーネントがシステムによって破棄され、(該当する場合) 再作成される順序 (フラグメント、アクティビティ、アクティビティの Threads/AsyncTasks/Timers、静的データ (いつクラスがアンロードされるか)、他のクラスの Threads/AsyncTasks/Timers、ホスト TabActivity、アプリがバックグラウンドにある場合とフォアグラウンドにある場合の両方で、ActivityGroup、バインドされたローカル サービス、アプリケーション、プロセス)。
どの時点で破壊を停止できますか (アプリケーションに戻ったときに、「Application オブジェクトを含むすべてが破壊され、プロセスは生きている」など、どのような状態になる可能性がありますか?(Androidを変更せずに)プログラムで同じ種類の破壊を自分自身で引き起こし、システムがそれを行うときと見分けがつかないようにすることは可能ですか、それとも私たち自身がメモリを解放することを選択したとき(onLowMemoryによってトリガーされる)に必要な別のメカニズムですか?
1) からのすべてのシナリオの信頼できる再現手順 (junit.framework でしょうか? 私はそれを調査していません) ?
「ユーザーが長時間タスクを離れた場合、システムはルート アクティビティを除くすべてのアクティビティのタスクをクリアします。ユーザーが再びタスクに戻ると、ルート アクティビティのみが復元されます」: これはプロセス/コンポーネントとは別にありますかライフサイクル/破壊、またはそれに関連付けられていますか?
私は、多くの場合不完全で誤解を招き、時には間違った情報を提供するさまざまな情報源を読みました。
確かに、私はドキュメントの一部をざっと読んだので、何かを見逃したり誤解したりしている可能性があります。
[編集] 誤解を避けるために: 私が求めているのは、Android がコンポーネントを破棄してメモリを解放し、 Activity.onDestroyをバイパスすることです。
アプリをバックグラウンドにして後で戻ると、次のいずれかのシーケンスが発生します。
- onPause、onStop、onRestart、onStart、onResume
- onPause、onStop、Application.onCreate、onCreate(notNull)、onStart、onResume
[EDIT2] バウンティ開始。信頼できる情報が必要です: アクティビティ、フラグメント、アプリケーション、バインドされた (リモートの可能性がある) サービス、プロセス。
部分的/完全な破壊のシナリオ。最初のポイントを参照してください。