2017-12-16 35 views
0

私はすべてのネットワーク関連のコードにVolleyを使用しています。 VolleyはメインのUIスレッドから実際のネットワーキングの部分を取り除いているので、実際にそれについて多くのことを考えていたが、いくつかのケースでは、応答データの処理にかなりの時間を費やしていることに気づいた。onResponse()。このコードは実際にメインスレッド上で実行されるようです。これを行う最善の方法は何ですか?コードの特定の部分に対してAsyncTaskを定義する必要がありますか、またはVolleyのスレッド機構にもかかわらず、AsyncTaskにネットワーク要求全体を入れるだけですか?Volley onResponse()をバックグラウンドスレッドで処理する必要がありますか?

答えて

0

アクティビティが破棄または再作成される場合に備えて、独自の欠点があるため、AsyncTaskを使用しないことをお勧めします。さらに、Volleyの待ち行列メカニズムを使用している場合、これは単にアドオンとして機能します。

私が考えることのできる解決策は、ローダーを使用することです。ネットワークコールを行い、loadInBackgroundメソッドで応答を処理します。また、onLoadFinishedが呼び出されると、処理されたレスポンスが返されます。

もう1つの解決策(推奨されていない、あまり効率的ではない)は、サービスを使用することです。サービスからネットワークコールを行い、データを処理してアクティビティに返信することができます。

+0

なぜAsyncTaskは悪い考えですか?それはどのような活動に結びついていますか? – ardevd

+0

@ardevdこれを参照することができますhttp://blog.danlew.net/2014/06/21/the-hidden-pitfalls-of-asynctask/ – Deepak

+0

@ardevd問題を解決できましたか? – Deepak

関連する問題