我有一个能够进行大量同步网络调用的android库,我打算在我的应用程序中使用这个库。例如,当应用程序启动时,我需要显示用户列表,用户组列表和常规信息。为此我已经有一个主活动,它包含三个片段(列表的两个列表片段和一个普通片段),用于显示三个内容,用户列表的数据和用户组列表来自前面提到的库中的同步网络调用。我的问题是,使用这些同步库调用来获取片段显示的数据的正确(推荐)方法是什么。根据我的理解,有三种主要方法可以做到这一点。
使用AsyncTask类,因此对于库方法 getUserList(...)我必须创建一个专用的AsyncTask类。
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
}
})
}
}
此方法还要求我为每个同步方法调用重复此操作,并且很容易变得难以操作。
同样,我的问题是实现这一目标的首选方法是什么?这是我列出的3个中的任何一个吗?感谢。