2014-06-13 20 views
2

我有一个Android应用程序需要上传,相对频繁地下载10-12MB之间的数据文件。鉴于我的应用程序是比较流行的像印度这样的国家可能不具有良好的互联网连接,我在下面的约束从Android应用上传大数据到服务器的最佳方式是什么?

  • 用户可能无法连接到互联网全天候
  • 用户的交互并不取决于是否下载工作/上传成功。

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

我知道使用“com.loopj.android.http.AsyncHttpClient;”为沟通,但我想知道是否有更好的选择,可以做到以下几点:

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

相对经常10-12 MB?您是否告诉我,您希望每个用户在每次更新数据库时都重新下载整个诗歌数据库?你不应该只是让用户下载更新数据(而不是每次都是整个数据库)吗? –

+0

为什么你会有相同的上传要求?每个用户会一次上传几千首诗吗?我对此表示怀疑。即使有些人做了,当他们需要做大量的上传时,他们可能更愿意使用实际的PC。 –

+1

人们不会理解为什么它是10-12 MB,或者它是否是好事。让我们坚持所问的问题。 –

回答

2

是的,你应该使用服务,特别是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)(虽然它与套接字,概念是或多或少相同)。

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

相关问题