2015-09-16 7 views
8

数日前、私はRetrofitの使用方法を学びましたが、いくつかの場合にはRetrofitと一緒にASyncTaskを使用する必要があるチュートリアルがありました。私の印象は、Retrofitを使ってASyncTaskを使わないようにしていたからです。そして今、私はRetrofitをかなり良く理解しています(それを使用し、すべてのASyncTaskコードをRetrofitに変更するには十分です)、私はまだRetrofitでASyncTaskを使用する良い言い訳や理由は見つけられていません。それとも、私はここに何もないのですか?なぜRetrofitをAsyncTaskで使用するのですか?

Btw RetrofitをASyncTaskで使用することについて言及した少なくとも3つの異なるチュートリアルがありましたが、もう見つけられませんでした。私は1を見つけることしかできなかったhttp://karanbalkar.com/2014/12/tutorial-94-using-retrofit-for-android/

+3

retrofitは、同期または非同期で動作できます。これを同期的に使用すること(asynctaskを使用)は、順番に発生する必要がある呼び出しを簡単に連鎖させる方法です。 (またはRxを使っても構いません) – njzk2

+0

@ njzk2、連鎖呼び出しのサンプルを用意してください。私はそれを見たことがないので...または多分私が持っているが、私は見逃している可能性があります... – imin

+0

2つ目の引数への引数は、最初の結果に依存する2つの呼び出しを検討してください。そのためには、これらの呼び出しを順番に行う必要があります。今度は、あなたのAPIコールのコールバックベースのバージョンを使用してそれを行う方法を考え、asynctaskで同期バージョンを使用してそれを行う方法を検討してください。あなたは、asynctaskのバージョンがはるかに良いことがわかります。余分なポイントについては、Rxバージョンのコールを使用して同じことを行います。 – njzk2

答えて

7

引用された竜は同期呼び出しを使用します。同期呼び出しの場合は、AsyncTaskに入れることが理にかなっています。

ただし、Retrofitは非同期呼び出しもサポートしているため、AsyncTaskを使用せずに直接使用する方が簡単です。

+0

私は本当にAsyncTaskが非同期呼び出しのためにのみ使用されていると考えています。したがってAsyncTaskという名前です。また、http://developer.android.com/reference/android/os/AsyncTask.htmlのドキュメンテーションから、同期に言及する唯一の時間は、 "AsyncTaskは、すべてのコールバック呼び出しが次の操作は明示的な同期なしで安全です。上で述べた同期呼び出しによって、uはドキュメンテーションの意味を表していましたか? – imin

+0

いいえ、改造呼び出し自体は同期的です。つまり、応答が受信されるまでブロックされます。 – Henry

+0

私はそれを理解しましたが、コールバックの権利を指定することで、非同期のレトロフィットを簡単に作成できますか?あなたの答えに記載されているように、同期呼び出しのためのASycnTaskの使い方に関する上記の私のコメント。 – imin

関連する問題