ネットワーク リクエスト処理用の Volley の実装に成功しました。ただし、アプリが起動すると、アプリは終了し、必要な構成ファイルを取得します。この非常に初期の初期構成データを取得するために Volley が正しい選択であるかどうか疑問に思っていますか? キュー、キャッシュなどのボレー スレッドをインスタンス化するのに時間がかかるので、おそらくこの 1 つの最初の要求では、それは間違った選択でしょうか? これについてのフィードバックが欲しかった。リクエストをフルフィルするために数回試行する RetryPolicy 設定のため、これは良い選択ですが、一方では、ボレー リクエスト キューのセットアップとボレー スレッドの実行に時間がかかる可能性があります。AsyncTask だけを使用してこの最初のリクエストを発行したほうがよいでしょうか?
3 に答える
これはfirst
リクエストなので、私は を使用したいと思います。VolleyAsyncTask
は非常に優れていますが、これはアプリの最初の段階で重要なプロセスです。おそらくその時点では、Volley はready
まだリクエストを実行していないかsome additional meaningful time
、リクエストを実行するAsyncTask
のに時間がかかる可能性があります。この特定のケースに適しています。さらに、このfirst
リクエストがどのように行われるかをすべて制御できます。
EDIT:Ficus Kirkpatrick(Volleyライブラリのマスターマインド)を見たところ、RequestQueue
オンデマンドで作成するか、最初に作成して残りのコードではシングルトンのように保つことができると彼は言ったので、これを聞いて試してみてくださいAsyncTask と Volley を使用して、パフォーマンスの点で結果を確認します。私はまだ、単純な AsyncTask の方が Volley を使用するよりもうまく機能すると思います。もちろん、Volley は必須ではないと彼は言いました。したがって、これはその 1 つだと思います必須ではない場合。
インフラストラクチャを使用したいが、リクエストAsyncTask
の作成が簡単な場合は、リクエストと同じパターンに従うdroidQueryVolley
の使用を検討してください。たとえば、 から取得するには、次の省略形の方法を使用できます。Javascript
JSON
example.com
$.getJSON("http://www.example.com", null, new Function() {
@Override
public void invoke($ droidQuery, Object... params) {
JSONObject json = (JSONObject) params[0];
//TODO handle json
}
});
または手書きの方法:
$.ajax(new AjaxOptions().url("http://www.example.com")
.type("GET")
.dataType("json")
.success(new Function() {
@Override
public void invoke($ droidQuery, Object... params) {
JSONObject json = (JSONObject) params[0];
//TODO handle json
}
})
.error(new Function() {
@Override
public void invoke($ droidQuery, Object... params) {
AjaxError e = (AjaxError) params[0];
Log.e("$", "Error " + e.status + ": " + e.error);
}
}));