ライブラリを使用してコード ベースを簡素化することを検討してください。私はdroidQueryを書きました。これはとりわけ、AsyncTask
s を単純化するために使用できます。たとえば、 からJSON
データを取得しexample.com
、後でコンテキストにアクセスするには、次のようにします。
$.ajax(new AjaxOptions().url("http://www.example.com")
.context(this)
.type("GET")
.dataType("json")
.success(new Function() {
@Override
public void invoke($ droidQuery, Object... params) {
JSONObject json = (JSONObject) params[0];
Context context = droidQuery.context();
//TODO:
}
})
.error(new Function() {
@Override
public void invoke($ droidQuery, Object... params) {
AjaxError error = (AjaxError) params[0];
Log.e("Ajax", "Error " + error.status + ": " + error.reason);
}
}));
頻繁に呼び出すさまざまなリクエストの場合、AjaxOptions
後で使用するために、さまざまな URL、タイプ、データ型などを持つのインスタンスを作成することもできます。
Map<String, AjaxOptions> requests = new HashMap<String, AjaxOptions>();
//add the example above:
requests.put("example", new AjaxOptions().url("http://www.example.com")
.context(this)
.type("GET")
.dataType("json")
.success(new Function() {
@Override
public void invoke($ droidQuery, Object... params) {
JSONObject json = (JSONObject) params[0];
Context context = droidQuery.context();
//TODO:
}
})
.error(new Function() {
@Override
public void invoke($ droidQuery, Object... params) {
AjaxError error = (AjaxError) params[0];
Log.e("Ajax", "Error " + error.status + ": " + error.reason);
}
}));
その後、次のように呼び出してこのタスクを実行します。
$.ajax(requests.get("example"));