jQueryの人気は、詰まるところ1つの単純な事実に行きつく。それを使うと、非同期タスクの実行とDOM操作に必要なコード量が著しく少なくなるのである。新プロジェクト AQueryは、Android開発者に同じ恩恵をもたらそうとしている。Android QueryがUI開発にもたらす便益を紹介するために、我々はこのプロジェクトページからサンプルを引用する。
使用前
使用後
Android Queryはイベントハンドラーの貼り付けを簡単にしてくれる。インターフェースや匿名クラスを作らずに、単にイベントハンドラーのメソッド名を間違えないようにするだけである。
aq.id(R.id.button).clicked(this, "buttonClicked");
スクリーンサイズとAPIバージョンの違いによるフラグメンテーションにより、1つのデバイスから多くのものを得るのが難しくなっている。Android Query はAPIに独自のラッパーを提供することでこれらの問題の幾つかを解決している。例えば、関数 “aq.hardwareAccelerated11();” は、デバイスがAPI11をサポートしているかどうか検知し、可能であればハードウェアによる高速化を適用する。
異なる幾つものスクリーンサイズで開発している時、しばしばタブレットで開発を始め、フォーンに合うように、コントロールを削除し、再編成する。通常、コントロールの背後にあるコードでコントロールを操作しようとする前に、実際に axmlファイルで生成されたのがどのコントロールかを見るために、ビジュアルツリーを調べなければならない、ということである。
Android Queryを使うと、メソッドを条件付きで繋げることでこのようなチェックを回避できる。以下のコード片を考えよう。
aq.id(R.id.address).text(name).background(R.color.red).textColor(R.color.black).enabled(true).visible().clicked(this, "addressClicked");
もしコントロールのアドレスが存在しなければ、後ろの全てのセッターやイベントハンドラーは、単にno-opになる。これによって、デバッグが多少難しくなるが、 onCreateメソッドに必要な行数を劇的に減らすことができる。
非同期のHTTPリクエスト起動するのも非常に簡単になる。単純な、あるいは複数パートのPOSTオペレーションもサポートし、バイナリ、 JSON, HTML、XMLフォーマットのデータを受けつけることが出来る。イメージは別にサポートされていて、1行でイメージをダウンロードし、キャッシュし、コントロールにそれをロードできる。