在 Android 中在此服务中上传数据的最佳服务启动类型是啥
Posted
技术标签:
【中文标题】在 Android 中在此服务中上传数据的最佳服务启动类型是啥【英文标题】:What the best Service launch type to upload data in this service in Android在 Android 中在此服务中上传数据的最佳服务启动类型是什么 【发布时间】:2018-09-20 18:24:43 【问题描述】:我需要将数据上传到Service
中的服务器吗?
众所周知,android 系统会在内存不足的情况下终止进程。
并且任何时候我的服务都可以被杀死,直到上传没有完成?
如何避免这个麻烦?
上传完成后我想打电话给stopSelf()
。
我必须使用什么常量来避免这种情况?
https://developer.android.com/reference/android/app/Service#START_CONTINUATION_MASK
【问题讨论】:
【参考方案1】:如何避免这个麻烦?我想在上传时调用 stopSelf() 完成的。我必须使用什么常量来避免这种情况?
您可以使用IntentService,任务完成后会自动关机。
众所周知,Android 系统会在内存不足的情况下终止进程。和任何 在上传未完成之前我的服务可以被终止的时间?
您可以使用startForeground
服务作为
已启动的服务可以使用 startForeground(int, Notification) API 将服务置于前台状态,系统认为 它是
user is actively aware of and thus not a
candidate for killing when low on memory
.
对于
我必须使用什么常量来避免这种情况?
使用
START_STICKY
: 杀死后重启服务(重启时意图为空)
START_REDELIVER_INTENT
: 一旦被杀死就重新启动服务并获得第一次收到的相同意图
注意:很少有设备不遵循START_STICKY
和类似说明。
参考:
How to automatically restart a service even if user force close it?
【讨论】:
你的意思是 startForegroundService() 吗? 是的,这是针对这种情况的推荐解决方案,否则,您可以使用意图服务并覆盖onlowmemory
,如果您可以通过将 null 设置为引用来释放一些内存
这个解决方案有点麻烦 - min api = 26
哪种解决方案? startforegorund 可从 API 5 使用 startForeground (int id, Notification notification)
和低内存也来自 API 1以上是关于在 Android 中在此服务中上传数据的最佳服务启动类型是啥的主要内容,如果未能解决你的问题,请参考以下文章
将 1000 多条记录上传到还包含来自 iOS/Android 应用程序的每条记录的图像的服务器的最佳方法是啥?