android 中用于将大型 (2 GB) 文件上传到服务器的服务/IntentService
Service / IntentService for uploading large(2 GB) files to server in android
我应该使用什么来上传大文件到服务器即服务或 intentservice。
我觉得 Intententservice 是上传大文件的正确方法,因为
1) 它创建的是自己的工作线程,
2) 上传后无需停止服务自动停止
如果我要去服务,我们确实有下面提到的一些加点:
1) 我们可以在服务中创建一个线程来上传大文件
2) 如果需要,我们可以在上传时并行执行任务
3) 如果假设在上传 OS 时发生内存不足 (OUM) 可以 重新创建我们的服务 但是对于 IntentService 我们没有这个特权,我猜测
所以请大家提出你的意见,我应该使用哪一个来上传大文件。
我觉得数据很大(2GB),应该通过IntentService
上传。
为什么? 如果你使用 Service
那么它将在 并行 中工作没问题,但在任何情况下如果你从后台终止您的应用程序,然后您的服务将立即停止。
If you use IntentService then it will continue it's task until it finished, no problem if you kill the process from background. That is very important I think.
你上面提到的最好的部分是它在不同的线程中工作,所以不会对 MainThread
产生影响。
你应该使用 IntentService,我的建议,祝你好运:)
尝试将前台服务用于较长的 运行 任务。因为 android 给予前台服务比启动服务更高的优先级。在 android 客户端
中遵循以下逻辑
- 创建一个内部有线程实现的服务。
- 将服务作为前台。
- 尝试在Http连接中设置chunk长度
- 尝试创建 Web 服务以支持 "resume upload"
要设置块大小,
httpurlConnection.setChunkedStreamingMode(buffersize)
通过设置块大小,我们可以限制内部缓冲以避免OOM。
要了解实现简历上传选项的知识,请参阅
this
我应该使用什么来上传大文件到服务器即服务或 intentservice。
我觉得 Intententservice 是上传大文件的正确方法,因为
1) 它创建的是自己的工作线程,
2) 上传后无需停止服务自动停止
如果我要去服务,我们确实有下面提到的一些加点:
1) 我们可以在服务中创建一个线程来上传大文件
2) 如果需要,我们可以在上传时并行执行任务
3) 如果假设在上传 OS 时发生内存不足 (OUM) 可以 重新创建我们的服务 但是对于 IntentService 我们没有这个特权,我猜测
所以请大家提出你的意见,我应该使用哪一个来上传大文件。
我觉得数据很大(2GB),应该通过IntentService
上传。
为什么? 如果你使用 Service
那么它将在 并行 中工作没问题,但在任何情况下如果你从后台终止您的应用程序,然后您的服务将立即停止。
If you use IntentService then it will continue it's task until it finished, no problem if you kill the process from background. That is very important I think.
你上面提到的最好的部分是它在不同的线程中工作,所以不会对 MainThread
产生影响。
你应该使用 IntentService,我的建议,祝你好运:)
尝试将前台服务用于较长的 运行 任务。因为 android 给予前台服务比启动服务更高的优先级。在 android 客户端
中遵循以下逻辑- 创建一个内部有线程实现的服务。
- 将服务作为前台。
- 尝试在Http连接中设置chunk长度
- 尝试创建 Web 服务以支持 "resume upload"
要设置块大小,
httpurlConnection.setChunkedStreamingMode(buffersize)
通过设置块大小,我们可以限制内部缓冲以避免OOM。
要了解实现简历上传选项的知识,请参阅 this