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

3
我的应用程序需要定期向服务器请求新数据。我已经研究了这个问题,许多人建议使用同步适配器来与服务器同步,然而我的要求发生了变化,我需要执行以下过程。是否仍建议使用同步适配器,还是可以使用其他库来有效地进行以下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 请求以获取一些包含图像 URL 的数据,并使用这些 URL 进行新的 HttpGet 请求。我的应用程序需要 POST 和图像结果才能运行。
这是一种有效的使用同步适配器的方法吗?还是完全不可接受的?或者我可以使用 Volley/Robo spice 将图像请求生成多个线程?抱歉我是个新手,但这是我一直在尝试解决的情况。
更新:
经过对 Volley 和 Robospice 的优缺点进行审查后,我选择使用 Volley,因为我可以自定义代码并对缓存机制具有更多控制。
1个回答

5

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

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

  • 在本地Android进程中进行异步后台处理
  • 根据您的设计可能比应用程序进程更轻量级
  • 但应用程序和异步适配器之间的通信将涉及IPC,这意味着需要捆绑/解除捆绑东西

使用Volley,您将获得:

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

使用RoboSpice,您将获得:

  • Volley所提供的一切,但请求将在Android服务中执行
  • 更容易设置缓存
  • 更多用于网络连接的选择(如spring android、google http client、retrofit)等

那么在 Robospice 和 Volley 中,由于我正在下载多个图像的 zip 文件(每个文件的大小为 300KB),您建议使用 Robospice 吗?因为我在一些讨论帖中听说 Volley 最适合用于短网络调用。 - sanath01
我认为这取决于你。两个库都有更多或更少相同的功能。我能告诉你的是它可以很好地与RS配合使用。我不是Volley用户,但很可能也可以使用。 - Snicolas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接