用于将大型(2 GB)文件上载到android

时间:2018-03-23 05:03:50

标签: android service intentservice

我应该使用什么来将大文件上传到服务器,即服务或意图服务。

我觉得Intententservice是上传大文件的正确方法,因为

1)创建自己的工作线程

2)上传后无需停止服务自动停止

如果我要去服务,我们确实有以下提到的优点:

1)我们可以在服务中创建一个线程来上传大文件

2)如果需要,我们可以在并行中执行任务

3)如果假设在上传操作系统时发生内存不足(OUM)可以重新创建我们的服务但是对于IntentService我们没有这个权限,我想

所以请各位建议您查看我应该使用哪些内容来上传大文件。

2 个答案:

答案 0 :(得分:1)

尝试将Foreground服务用于长时间运行的任务。因为android比开始服务更优先考虑前台服务。在android客户端

中遵循以下逻辑
  • 1.在里面创建一个带有线程的服务。
  • 2.将服务作为前景。
  • 3.尝试在Http连接中设置块长度
  • 4.尝试创建支持"恢复上传"
  • 的网络服务

设置块大小

  

httpurlConnection.setChunkedStreamingMode(缓冲区大小)

通过设置块大小,我们可以限制内部缓冲以避免OOM。

要获得实施简历上传选项的知识,请参阅  this

答案 1 :(得分:0)

我认为数据非常大(2GB),应该通过IntentService上传。

为什么?如果您使用Service,那么它将在并行中运行没有问题,但在任何情况下,如果您从后台终止您的应用,那么您的服务将立即停止。

  

如果你使用IntentService,那么它将继续它的任务直到它完成,如果你从后台杀死进程没问题。我认为这非常重要。

上面提到的最好的部分,它在不同的线程中工作,因此对MainThread没有影响。

你应该使用IntentService,我的建议,祝你好运:)