2

我有一个Android App,需要比较频繁地上传、下载10-12MB之间的数据文件。鉴于我的应用程序在印度等可能没有良好互联网连接的国家更受欢迎,我在以下限制条件下工作

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

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

我知道使用“com.loopj.android.http.AsyncHttpClient;” 进行交流,但我想知道是否有更好的替代方案可以执行以下操作:

  • 我应该启动一个提供上传/下载接口的服务吗?
  • 即使用户不使用该应用程序,是否可以在后台执行此操作?
4

1 回答 1

2

是的,您应该使用服务,特别是前台服务(在上传过程中显示通知)。此外,前台服务不太可能被 Android 杀死

...系统认为它是用户主动意识到的,因此在内存不足时不适合杀死。

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

对于uploads,没有等价物(至少据我所知)。您必须推出自己的解决方案,可能涉及Content-RangeHTTP 标头。这在很大程度上取决于您的服务器,例如 Google Drive 有一个用于此的 API。还可以看看Resume file upload/download after lost connection(Socket 编程)(虽然它是使用套接字,但概念或多或少相同)。

另一种选择是使用 aSyncAdapter来完成此任务。请参阅使用同步适配器传输数据。我不确定这是否支持恢复。

于 2014-06-13T21:25:28.877 回答