「Velloy」Google I/O 2013で発表されたAndroid用の便利なネットワーク通信ライブラリの使い方


こんにちは、@9ensanです。

YouTube Preview Image

今年のGoogle I/Oでは、Androidに関するニュースといえばゲームに関する部分が一番大きかったのかと思います。
ですが、その中で「Google Play」などで使用されている、ネットワーク通信処理を行う便利なライブラリが実は発表されています。

その内容のまとめと使い方です。

今まで

今までネットワーク通信処理を記述しようと思うと、
便利なライブラリの代表的な物としては

がありました。
もし、真面目に記述しようと思うと

を利用してAsyncTask内で取得処理を記述すると思います。
既存のライブラリ「Android Asynchronous Http Client」は、

などの有名なプロジェクトで利用されています。
既にネットワーク接続用のライブラリを利用していていたり、独自に組み込んでいて問題が無いと言う人は無理に変更する必要はないと思います。
ですが、これから新しく作成するアプリに関しては使ってみて損は無いのではないでしょうか?

特徴

  • JSON、テキスト、画像のやり取りができる
  • メモリ、ディスクキャッシュ機能がある
  • 強力なカスタマイズ能力
  • デバッグ、トレースツールがついている

今までのネットワーク通信処理の問題

  • ネットワークリクエストが順次処理され、順番を入れ替えられない
  • 画面を回転させたらいつもネットワークからデータを再取得する(独自キャッシュの実装が必要)
  • リスト表示などで画面外に行ったViewのネットワーク通信のタスクキャンセルが面倒
  • バージョンによる互換性の問題

Volleyを使えば、これらの問題を解決することが出来ます。

使い方

セットアップ

  1. Volleyのプロジェクトをクローンします。
    git clone https://android.googlesource.com/platform/frameworks/volley
  2. EclipseにAndroidプロジェクトとしてVolleyをインポートします。
    velloy-google-io-http-network-sample-01
    velloy-google-io-http-network-sample-02
    velloy-google-io-http-network-sample-03
  3. Volleyのプロジェクトが作成されたら、プロパティを開いて「Android」の箇所の「ライブラリー」のチェックボックスにチェックが入っている事を確認します。
    もし、入っていない場合は、チェックを付けて「OK」ボタンを押下します。
    velloy-google-io-http-network-sample-04

ここまでで、Volleyのプロジェクトの設定は終了です。
続いては、Volleyを利用する側のアプリケーションを作成していきます。

Volleyを利用するアプリケーションのサンプル
(com.android.volley.toolbox.NetwokImageViewを使った実装)

  1. プロジェクトを作成したら、プロパティを開いて「Android」を選択し、「追加」ボタンを押下します。
    velloy-google-io-http-network-sample-05
  2. 「Project Slection」ウインドウが開いら「Volley」を選択して「OK」ボタンを押下します。
    velloy-google-io-http-network-sample-06
  3. Volleyがライブラリーに追加されている事を確認して「OK」ボタンを押下します。
    velloy-google-io-http-network-sample-07
  4. AndroidManifest.xmlファイルにインターネット接続用のパーミッションを追加します。
  5. 「com.android.volley.toolbox.NetworkImageView」をレイアウトに配置します。
  6. 画像の読み込み処理を実装します。

これで、ネットワークから画像の読み込み処理と、画像キャッシュの処理が実装できました。
今回は、画像の取得処理を記述しましたが、WebAPIからのJSON取得処理にももちろん利用できます。
Volleyには便利なクラスがたくさんあるので一度ソースコード読んでみたら参考になると思います。

関連する記事:

Facebookでコメント

コメント

  1. コメント 0

  1. トラックバック 0

*

return top