我有一个Android应用程序,需要上传,下载10-12MB之间的数据文件相对频繁。鉴于我的应用程序在印度等可能没有良好互联网连接的国家更受欢迎,我正在以下限制下工作
- 用户可能无法全天候连接到互联网
- 用户交互不取决于下载/上传是否成功。
这是一个诗歌应用程序,我们下载新的诗歌到用户的手机和上传用户的诗歌到我们的服务器,每当我们连接到互联网。
我理解使用"com.loop .android.http. asynchttpclient;"进行通信,但我想知道是否有更好的替代方案可以做以下事情:
- 我应该启动一个提供上传/下载接口的服务吗?
- 是否有可能在后台做这些事情,即使用户不使用应用程序?
是的,您应该使用服务,特别是前台服务(在上传过程中显示通知)。另外,前台服务不太可能被Android杀死:
…系统认为它是用户主动意识到的东西
对于下载, Android提供了一个现成的解决方案,称为DownloadManager。它已经包含了在连接丢失的情况下恢复下载的功能。
对于上传的,没有等效的(至少据我所知)。您必须推出自己的解决方案,可能涉及Content-Range
HTTP标头。这在很大程度上取决于你的服务器,例如Google Drive有一个API。也可以看看丢失连接后的Resume文件上传/下载(Socket编程)(虽然它是使用Socket,但概念或多或少是相同的)。
另一个选项是使用SyncAdapter
完成此任务。请参阅使用同步适配器传输数据。