从Android应用程序上传大数据到服务器的最佳方式是什么?

时间:2014-06-13 20:19:34

标签: java android loopj

我有一个需要上传的Android应用程序,相对经常下载10-12MB之间的数据文件。鉴于我的应用程序在印度等国家更受欢迎,可能没有良好的互联网连接,我正在遵循以下限制

  • 用户可能无法连接到互联网24x7
  • 用户的交互不依赖于下载/上传是否成功。

这是一个诗歌应用程序,我们下载新诗到用户手机,并在我们连接到互联网时将用户的诗歌上传到我们的服务器。

我理解使用“com.loopj.android.http.AsyncHttpClient;”对于沟通,但我想知道是否有更好的替代方案可以做到以下几点:

  • 我应该开始提供上传/下载界面的服务吗?
  • 是否可以在后台执行此操作,即使用户未使用该应用程序?

1 个答案:

答案 0 :(得分:2)

是的,您应该使用服务,尤其是foreground service(以便在上传过程中显示通知)。此外,前台服务是not likely to be killed by Android

  

......系统认为它是用户积极意识到的东西   当内存不足时,不会成为杀人的候选人。

对于下载,Android提供了一个名为DownloadManager的现成解决方案。它已经包括在连接丢失的情况下恢复下载的功能。

对于上传,没有相应的内容(至少据我所知)。您必须推出自己的解决方案,可能涉及Content-Range HTTP标头。这取决于您的服务器,例如Google云端硬盘有API for this。另外看一下Resume file upload/download after lost connection (Socket programming)(虽然它是套接字,概念或多或少相同)。

另一个选择是使用SyncAdapter执行此任务。见Transferring Data using Sync Adapters。我不确定这是否支持恢复。