私はAndroidネットワークライブラリを使用して、同期ネットワークコールを大幅に増やしています。私はこのライブラリを自分のアプリケーションで使用したいと考えています。たとえば、アプリが起動すると、ユーザーのリスト、ユーザーグループのリスト、一般情報を表示する必要があります。このため、私は既に3つのフラグメント(リストの2つのリストフラグメントと1つの通常のフラグメント)を表示する3つの主なアクティビティを持っています。ユーザリストとユーザグループのリストは、 。私の質問は、これらの同期ライブラリ呼び出しを使用してフラグメントによって表示されるデータをフェッチする適切な(推奨される)方法です。私の理解から、これを行う3つの主要な方法があります。 AsyncTaskクラスを使用 Android:同期ネットワークコールの処理
- 、私は専用のAsyncTaskクラスを作成する必要がありますライブラリー法 getUserList(...)のためになります。
public class FetchTask extends AsyncTask<Void, Void, Boolean> { private List<User> users; protected Boolean doInBackground(Void... params) { users = getUserList(...); } protected void onPostExecute(final Boolean success) { //inform user list fragment that user data has been fetched successfully }
}
私はそれが私は(かなりの量である)からなるすべてのネットワーク呼のためasyncTaskクラス を作成する必要があり、それは、UIスレッドと通信 有することを意味するこの方法を使用 場合完了時に
は直接同期呼び出し
public class UserListFragment extends ListFragment { private List<User> users; private ArrayAdapter<User> userAdapter .... protected void OnCreate(Bundle savedInstance) { super.OnCreate new Thread(new Runnable(){ public void run(){ users = getUserList() //notify array adapter that data has changed } }) } }
をラップするスレッドをスピンオフ
このメソッドでは、私が作成したすべての同期メソッド呼び出しでこれを繰り返す必要があり、簡単に扱いにくくなる可能性があります。
- 最後のメソッドはThreadpoolexecutorを使用していますが、私は がこのメソッドをまだ完全に理解していないことを認めなければなりません。
私の質問は、この目標を達成するための好ましい方法は何ですか?それは私がリストした3のどれですか?ありがとう。
**ネットワークコールにはAsyncTaskを使用しないでください**。任意のネットワークライブラリを使用する – OBX
Retrofit –
'ネットワーク呼び出しにAsyncTaskを使用しないでください.'を使用することをお勧めします。ナンセンス@スーパーマン。 AsyncTaskまたはスレッドを使用する方法があります。あなたはしなければならない。 – greenapps