安卓系统:处理同步网络呼叫



我有一个android库,它可以进行大量的同步网络调用,我打算在我的应用程序中使用这个库。例如,当应用程序启动时,我需要显示用户列表、用户组列表和一般信息。为此,我已经有了一个主活动,它包含三个片段(两个列表片段用于列表,一个正常片段),用于显示三件事,用户列表和用户组列表的数据来自前面提到的库中的同步网络调用。我的问题是,使用这些同步库调用来获取要由片段显示的数据的正确(推荐)方式是什么。根据我的理解,有三种主要的方法可以做到这一点。

  1. 使用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线程通信

  2. 直接旋出一个线程来包装同步调用

    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
    }
    })
    }
    }
    

这个方法还要求我对每次同步方法调用都重复这个过程,而且很容易变得笨拙。

  1. 最后一个方法是使用Threadpoolexecutor,我必须承认还没有完全理解这种方法

我的问题是,实现这一目标的首选方法是什么?这是我列出的3个中的任何一个吗?谢谢

您应该使用Volley Library进行网络操作,因为截击维护了调用完美网络api所需的所有必要方法。点击此处

相关内容

  • 没有找到相关文章

最新更新