volley 読む
Java 製 Android の通信ライブラリplatform/frameworks/volley - Git at Google
Volley.newRequestQueue とかすると start 済みの RequestQueue が作られる
(別に普通に new してもいいけどそしたら start させる)
start では Dispatcher (Thread) がデフォルトでは4つスタートする
RequestQueue は作成時に Network や HttpStack を引数に取る
RequestQueue.add(request) するとキャッシュがあるか確認してあればそれ返し,無ければキューに突っ込む
Dispatcher が動き続けてるので勝手にキューからrequest取ってきて投げる
Dispatcher は作成時に Network を引数に取り,実際は Dispatcher → Network.performRequest → HttpStack.performRequest って感じ
投げ終わったらキャッシュに突っ込んでまたキュー見て投げられてないリクエストがあるか確認し続ける
自分で User-Agent Header つけてたけど, volley の中で勝手にパッケージ名とか使って UA つけてた,知らなかった
NetworkImageView は setImageUrl した際必ず load するようになってる (loadImageIfNecessary(false))
で, onLayout 呼ばれたら loadImageIfNecessary(true) でキャッシュがあればそれを使うとかしてる
キャッシュには url がキーに用いられる
なければ ImageLoader に url と listener 渡して取ってくる
Authenticator って interface があって AndroidAuthenticator って実装があるけど,中身は AccountManager.getAuthToken するやつ
認証するのはどうやるのが良いんだろう
- Header につける文字列作るモジュール作って普通に Request につける
- もしくはこんな感じにするか
後者だと RequestQueue に渡す事になって,こっちのリクエストには OAuth いるけどこっちは違ううエンドポイントに WSSE だ,とかなってしまうと出来ない
普通に Reuest の getHeaders を override して渡してあげるのが良さそう