【问题标题】:What is the most optimal way to upload large data to server from an Android App?从 Android 应用程序将大数据上传到服务器的最佳方式是什么?
【发布时间】:2014-06-14 05:25:28
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 10-12 MB 比较频繁?您是在告诉我您希望每个用户在每次更新该数据库时重新下载整个诗歌数据库吗?您不应该只让用户下载数据的更新(而不是每次都下载整个数据库)吗?
  • 为什么你对上传也有同样的要求?每个用户真的会一次上传数千首诗吗?我对此表示怀疑。即使有些人这样做,当他们必须进行大量上传时,他们可能更愿意使用实际的 PC。
  • 大家不要讨论为什么它是 10-12 MB 或者它是否是好事。让我们坚持提出的问题。

标签: java android loopj


【解决方案1】:

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

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

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

对于上传,没有等效的(至少据我所知)。您必须推出自己的解决方案,可能涉及Content-Range HTTP 标头。这在很大程度上取决于您的服务器,例如 Google Drive 有一个API for this。也可以看看Resume file upload/download after lost connection (Socket programming)(虽然是socket,但概念差不多)。

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

【讨论】:

    猜你喜欢
    • 2014-11-12
    • 2019-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 1970-01-01
    相关资源
    最近更新 更多