Androidネットワークフレームワーク Volley
彼らは彼らの利点と欠点を持って、私はandroid - async - httpを使用することを好む前に、現在Googleは、ネットワーク通信をより速く、よりシンプルで堅牢にすることができますAndroidプラットフォーム用の公式ネットワーク通信ライブラリを立ち上げました、Volleyは高性能のネットワーク通信機能を提供しながら、ネットワーク画像のロードのための良いサポートを提供し、完全にできる理由 我々はシンプルRESTクライアントへの傾向を維持できない理由はないでしょう
ボレーを使う
Volley のソースコードをダウンロードし、jar パッケージをビルドします。
$ git clone https://android.googlesource.com/platform/frameworks/volley
$ cd volley
$ android update project -p
$ ant jar
生成されたjarパッケージはプロジェクト内で参照され、extrasディレクトリには最新のvolleyのソースコードが格納されます。
説明
このデモでは、日常のWeb開発でよく使われる基本的な機能に焦点を当てていますが、volleyは非常に拡張性が高く、必要に応じて独自のWebリクエストにカスタマイズすることが可能です。
volleyの動画は以下の場所にあります。 http://www.youtube.com/watch?v=yhv8l9F44qo&feature=player_embedded
<スパン 上記は、Google IOの発表会でのパワーポイントからの添付画像です。 この上の図から、volleyは高速でシンプルなリクエスト(Jsonオブジェクト、画像読み込み)に向いていることがわかります。
volleyの特徴。
- JSON、画像などの非同期ダウンロード。
- Webリクエストの振り分け(スケジューリング)
- ネットワークリクエストの優先順位付け
- キャッシング
- リクエストの多段階キャンセル
- アクティビティ、ライフサイクルとの連動(アクティビティ終了と同時に全てのネットワークリクエストをキャンセル)
次に、volleyがくれたAPIをシンプルに使えるようになりましょう。
1. まずリクエストキューを取得します(RequestQueueは、使用するたびに新しいインスタンスを必要とするAsyncTaskとは異なり、1つのインスタンスしか必要としません)。
- // RequestQueue を初期化します。アクティビティは 1 つだけ必要です。
- プライベート ボイド initRequestQueue() { {
- mQueue = Volley.newRequestQueue(getApplicationContext())。
- }
2. volleyの非同期リクエストクラス(JsonObjectRequest、JsonArrayRequest、StringRequest、ImageRequest)を実装する。 )
使い方はあまり変わらないので、例は挙げず、よくある代表的なものをいくつか紹介します。
次のようなコードです。 のStringRequestです。 getリクエストに対応します。
- プライベート ボイド loadGetStr(String url) { {
- <スパン
- StringRequest srReq = (ストリングリクエスト) 新しい StringRequest(Request.Method.GET, url,
- 新しい StrListener()を使用します。 新しい StrErrListener()) { {
- <スパン
- <スパン プロテクト 最終 文字列 TYPE_UTF8_CHARSET = (日本語) charset=UTF-8"。 ;
- <スパン // parseNetworkResponse メソッドを書き換えて、戻り値のヘッダーパラメーターを変更し、コードの文字化けの問題を解決します。
- // サーバーのエンコーディングが UTF-8 でない場合は自分で変換する必要がありますが、そうでない場合は変換する必要はありません。
- オーバーライド
- プロテクト レスポンス<String> parseNetworkResponse()
- NetworkResponseレスポンス) { {
- トライ {
- String type = response.headers.get(HTTP.CONTENT_TYPE);
- もし (タイプ == ヌル ) {
- type = TYPE_UTF8_CHARSET です。
- response.headers.put(HTTP.CONTTENT_TYPE, type)を実行します。
- } さもなければ もし (!type.contains() "UTF-8" )) {
- タイプ += ";" + type_utf8_charset;
- response.headers.put(HTTP.CONTTENT_TYPE, type)を実行します。
- }
- } キャッチ (例外e) {
- }
- 戻る スーパー .parseNetworkResponse(response);
- }
- };
- srReq.setShouldCache() 真 ); // キャッシュするかどうかを制御する
- startVolley(srReq)を実行します。
- }
次のようなコードです。 JsonObjectRequest 投稿の リクエストに対応します。
- // ポストリクエスト
- プライベート ボイド loadPostJson(String url) {.
- // 2番目のパラメータの説明。
- // jsonRequestがNULLの場合はGET、POSTをデフォルトとするコンストラクタです。
- // そうでない場合は
- // get メソッドの場合はデフォルトで null、それ以外の場合は post メソッドに設定されます。
- JsonObjectRequest srReq =。 新しい JsonObjectRequest(url, ヌル ,
- 新しい JsonListener()を使用します。 新しい StrErrListener()) { {
- <スパン
- <スパン オーバーライド
- プロテクト Map<String, String> getParams() 投げる AuthFailureError {
- Map<String, String> map = 新しい HashMap<String, String>()を使用します。
- map.put( w" , <スパン 2459115"。 );
- map.put( "u" , <スパン f" "です。 );
- 戻る マップを作成します。
- }
- };
- srReq.setShouldCache() false ); // キャッシュするかどうかを制御する
- startVolley(srReq)を実行します。
- }
<スパン 注意すると、どちらか JsonObjectReques の postt と StringRequest の get は、成功時と失敗時のふたつのリスナー関数を渡す必要があり、成功時のリスナーは対応するデータ型: JsonObjectReques を返します。
<スパン <スパン
関連
-
よくあるJavaのエラー50選(その1)
-
Androidアップグレード/ブラシ戦略(GoogleネイティブシステムPixel)
-
AndroidStdioのインストール時に「メインクラスが見つからない com/intelligi/idea/Main」というエラーが発生する。
-
Android Studioプロジェクトをインポートすると、無効なgradle jdkコンフィギュレーションが見つかったと報告される
-
テスト、Eclipseは "エラーが発生しました、詳細はエラーログを参照してください。 java.lang.NullPointerException" を報告します。
-
Android 開発 キーボード イベント モバイル ミッキーマウス ケース
-
Android studioでTextViewのフォントを変更する2つの方法(例:模造歌、公式スクリプト)。
-
APKのインストール: 失敗 [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
-
Android View Bindingの使い方入門
-
Android Studio Tips
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
エラーの解決方法 URIがandroid studioのxmlファイルに登録されていない。
-
AndroidにおけるActivity/ActionBarActivity/AppCompatActivityの区別と理解について
-
-bash : gradlew コマンドが見つかりません。
-
Android ビューの階層構造
-
AndroidManifest.xml ファイルが見つからない 解決策
-
Error:Execution failed for task ':app:processDebugResources'. に対する解決策は
-
再試行したい場合は、手動で adb.exe を kill し、'restart' をクリックしてください。
-
二次元コード読み取り機能のAndroid実装(a) - ZXingプラグインアクセス
-
アンドロイドスタジオに角丸ボタンが実装される
-
コンパレータの例外です。比較メソッドは一般契約に違反する!