3

バックグラウンド

ランドスケープ モードをサポートすることで、アプリの改善に取り組んでいます。私がよく使うのはLoaders、より具体的にはAsyncTaskLoadersです。

ローダーを使用すると、 AsyncTaskとは対照的に、方向の変更によりアクティビティが再作成されている場合でも、バックグラウンド タスクを実行し続けることができます。

質問

ローダーのライフサイクルについてお聞きしたいです。

  1. 彼らはいつGC-edを取得しますか? それらを追跡する必要がありますか? 内部にビットマップがある場合は、できるだけ早く破棄する必要がありますか? アクティビティが実際に破棄された後にのみ GC されるのでしょうか (構成の変更によるものではありません)。
  2. 停止中の状態があることに気付きました。これで一時停止できますか?
  3. #2が当てはまる場合、それ自体のいくつかのポイントで一時停止できるローダーをどのように実装しますか?
  4. フラグメントもローダーを持つことができますか? 私が気づいたように、それは活動のためだけです。
  5. #4 が false の場合、コンテナ内のフラグメントを置き換えるナビゲーション ドロワーのデザイン パターンでローダーを使用する推奨される方法は何ですか?
  6. AsyncTaskLoader は AsyncTask (またはスレッド) のように中断できますか? そのコードと API を調べましたが、見つかりません。また、回避策を見つけようとしましたが、成功しませんでした。
  7. #6 が間違っている場合、代替手段はありますか? たとえば、ローダーが何かをロードする必要がないことがわかっている場合は、すぐに停止できます。私が考えることができる1つの方法は、停止するように指示するフラグ(おそらくAtomicBoolean)を設定し、時々この値をチェックすることです。問題は、それが使用する関数内でも追加する必要があることですが、より簡単な方法は「Thread.sleep(0)」などを呼び出すことです。
  8. ローダーのライフサイクルの説明はどこにありますか?
  9. AsyncTaskLoaders は同時に連携して動作しますか? それとも、単一のスレッドでのみ実行される AsyncTask のデフォルトの現在の動作に似ていますか?
4

1 に答える 1