Android:处理同步网络电话

时间:2017-01-18 05:20:05

标签: java android multithreading android-fragments android-asynctask

我有一个能够进行大量同步网络调用的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
                }
            })
    
        }
     }
    
  3. 此方法还要求我为每个同步方法调用重复此操作,并且很容易变得难以操作。

    1. 最后一种方法是使用Threadpoolexecutor,我必须承认我 还没有完全理解这种方法。
    2. 同样,我的问题是实现这一目标的首选方法是什么?这是我列出的3个中的任何一个吗?感谢。

1 个答案:

答案 0 :(得分:0)

你应该和Volley Library一起进行网络操作,因为volley会保留所有必要的方法来调用一个完美的网络api。 点击Here

相关问题