Volleyフレームワークはちょっと好きでしたが、まだ疑問があります。
たとえば、Volley は Loader パターンとどのように並んでいますか? リクエストは非同期で処理されるため、バックグラウンドで呼び出してもあまり意味がありません。一方、Loader パターンを無視すると、ロードをキャンセルして必要なリソースをリロードしますが、ちょっともったいないです。
Volley フレームワークは Android のローダーとどのように連携しますか?
Volleyフレームワークはちょっと好きでしたが、まだ疑問があります。
たとえば、Volley は Loader パターンとどのように並んでいますか? リクエストは非同期で処理されるため、バックグラウンドで呼び出してもあまり意味がありません。一方、Loader パターンを無視すると、ロードをキャンセルして必要なリソースをリロードしますが、ちょっともったいないです。
Volley フレームワークは Android のローダーとどのように連携しますか?
Loader は、Volley リクエストを含め、事実上あらゆるものをカプセル化できます。Volley のように、すでにバックグラウンド作業を処理し、メイン スレッドでコールバックするフレームワークをローダーがカプセル化する場合、ローダーの実装は基本クラスAsyncTaskLoader
から継承するのではなく、単純に継承する必要があります。Loader
次に、メソッドで Volley リクエストを開始しonForceLoad()
ます。
ローダーがコールバックを介してメイン スレッドで結果を取得したら、呼び出してアクティビティ/フラグメントにプッシュするだけdeliverResult()
です。
ローダーは、進行中の Volley リクエストへの参照を保持して、 でキャンセルできるようにする必要もありますonStopLoading()
。onStopLoading() は、画面の回転などの構成変更の場合には呼び出されず、Activity を離れるときにのみ呼び出されます。
唯一の欠点は、ローダーにはエラーを伝播するための組み込みメカニズムがなく、Volley には組み込まれていることです。したがって、ローダー内の Volley エラー コールバックでは、null の結果を配信するか、ローカル ブロードキャストを送信してアクティビティ/フラグメントにエラーを通知する必要があります。
Volley に関する記事を公開し、Loader パターンを介してプロジェクトに統合しました。高度なアプローチが示されています。ローダーの状態は完全に定義され、図に表示されます。
記事: https://plus.google.com/117981280628062796190/posts/8b9RmQvxudb
RequestFuture クラスを介して、Volley と同期リクエストを行うことができます。私はこれを個人的に調べていませんが、ローダーでそれを活用して、両方の世界を最大限に活用できるようです (ローダーの読み込み安定性を備えた Volley's Cache)。