0

ネットワーク リクエスト処理用の Volley の実装に成功しました。ただし、アプリが起動すると、アプリは終了し、必要な構成ファイルを取得します。この非常に初期の初期構成データを取得するために Volley が正しい選択であるかどうか疑問に思っていますか? キュー、キャッシュなどのボレー スレッドをインスタンス化するのに時間がかかるので、おそらくこの 1 つの最初の要求では、それは間違った選択でしょうか? これについてのフィードバックが欲しかった。リクエストをフルフィルするために数回試行する RetryPolicy 設定のため、これは良い選択ですが、一方では、ボレー リクエスト キューのセットアップとボレー スレッドの実行に時間がかかる可能性があります。AsyncTask だけを使用してこの最初のリクエストを発行したほうがよいでしょうか?

4

3 に答える 3

1

これはfirstリクエストなので、私は を使用したいと思います。VolleyAsyncTaskは非常に優れていますが、これはアプリの最初の段階で重要なプロセスです。おそらくその時点では、Volley はreadyまだリクエストを実行していないかsome additional meaningful time、リクエストを実行するAsyncTaskのに時間がかかる可能性があります。この特定のケースに適しています。さらに、このfirstリクエストがどのように行われるかをすべて制御できます。

EDIT:Ficus Kirkpatrick(Volleyライブラリのマスターマインド)を見たところ、RequestQueueオンデマンドで作成するか、最初に作成して残りのコードではシングルトンのように保つことができると彼は言ったので、これを聞いて試してみてくださいAsyncTask と Volley を使用して、パフォーマンスの点で結果を確認します。私はまだ、単純な AsyncTask の方が Volley を使用するよりもうまく機能すると思います。もちろん、Volley は必須ではないと彼は言いました。したがって、これはその 1 つだと思います必須ではない場合。

于 2013-08-10T00:28:52.593 に答える
0

インフラストラクチャを使用したいが、リクエストAsyncTaskの作成が簡単な場合は、リクエストと同じパターンに従うdroidQueryVolleyの使用を検討してください。たとえば、 から取得するには、次の省略形の方法を使用できます。JavascriptJSONexample.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);
                            }
                         }));
于 2013-08-14T15:17:28.220 に答える