后台上传大文件(应用关闭时服务重启)
Posted
技术标签:
【中文标题】后台上传大文件(应用关闭时服务重启)【英文标题】:Upload large file in background (service restarting when the app closed) 【发布时间】:2014-01-20 10:01:08 【问题描述】:我想上传大文件(~10 - 100Mb wifi 或移动网络),但在后台,因为用户可能会离开应用程序,然后系统会关闭应用程序(如果不是 enoguh 内存)我创建了一个为这种情况提供服务,但我的问题是,当我终止应用程序时,服务重新启动并重新开始上传。我发现同样的问题没有解决方案:
keeping background service alive after user exit app
My service is restarted each time the application is closed
所以它不起作用,但解决方案是什么? youtube 应用怎么样???
【问题讨论】:
您无法强制要求继续运行,但您可以实施一种方法来在您的应用被终止后恢复上传。 【参考方案1】:如果您担心服务被杀死的可能性,您应该通过startForeground()
方法使用前台服务。
来自Service Lifecycle Docs:
已启动的服务可以使用 startForeground(int, Notification) API 将服务置于前台状态,系统认为它是用户主动意识到的,因此在内存不足时不适合杀死. (理论上,在当前前台应用程序的极端内存压力下,服务仍然可能被杀死,但实际上这不应该是一个问题。)
【讨论】:
这将处理大多数正常情况,但也会记住服务可能会消失的其他情况,例如设备关闭时。如果您的应用也能从中恢复,那就太好了。【参考方案2】:您可以控制服务器吗?这看起来就像:
Uploading big files over HTTP
谷歌搜索提出了 Gears 项目的提案:
https://code.google.com/p/gears/wiki/ResumableHttpRequestsProposal
如果您可以使用允许远程 PUT 的服务器/插件/模块,那是您最好的选择,否则您可能必须自己滚动“分块”...根据您的工具和知识,这可能无论如何都是最佳选择,您可以对其进行调整以针对您的特定移动条件进行优化。
【讨论】:
这里的问题是如何在android端处理这个问题..说你想上传一个非常大的文件到S3..以上是关于后台上传大文件(应用关闭时服务重启)的主要内容,如果未能解决你的问题,请参考以下文章