使用同步适配器Volley / RoboSpice进行网络请求的同步处理

时间:2014-04-17 20:04:54

标签: android android-volley android-syncadapter robospice

我的应用程序需要定期向服务器请求新数据。我已经研究过这个,很多人建议使用同步适配器与服务器同步,但是我的要求发生了变化,我需要做以下过程。是否仍然建议使用同步适配器,或者我是否可以使用任何其他库来有效地生成以下Http请求序列。

public void onPerformSync(Account account, Bundle extras, String authority, ContentProviderClient provider, SyncResult syncResult) {

        ZipFile imageZipFile;

        /*this is a http post request and the size the zipfile is around 1Mb*/
        ZipFile resultFile=makeHttpPostRequest(String URL, String payload); 

        SomeObject result= processZipFile(resultZipFile);

        saveData(result);

         for(String url:result.getUrls()){

              /* this is a HttpGet request which returns a zip file that 
              contains 8 images , total size of zip would be around 200kb*/
              imageZipFile= makeHttpGetRequest(url); 

              saveImageZipToDisk(imageZipFile) 
         }

       }

正如您所看到的,我正在发出一个Http Post请求,以获取包含图片网址的一些数据,并使用这些网址制作新的HttpGet请求。我需要POST的结果以及我的应用程序运行的图像。

这是使用同步适配器的有效方法还是完全不可接受?或者我可以使用Volley / Robo spice将图像请求生成到多个线程吗?对不起,我是新手,但这是我一直试图解决的问题。

更新

因此,在回顾了Volley和Robospice的优点和缺点之后,我正在使用凌空,因为我可以自定义代码并对缓存机制有更多的控制。

1 个答案:

答案 0 :(得分:5)

所有替代方案都应该有效。

使用异步适配器,您将获得:

  • 原生android进程中的异步后台处理
  • 可能比应用程序流程更轻量级,具体取决于您的设计
  • 但应用程序和异步适配器之间的通信将涉及IPC,这意味着捆绑/分拆内容

使用Volley,你会得到:

  • 与您的应用程序在同一进程中的异步后台处理,在Volley threads内部
  • 您的请求与您的应用之间的通信将是完全双向的OO频道

使用RoboSpice,您将获得:

  • 什么凌空提供,但请求将在Android服务中执行
  • 可以更轻松地设置缓存
  • 更多网络替代品(spring android,google http client,retrofit)等。