【发布时间】:2017-02-01 06:53:54
【问题描述】:
我有一个跟踪用户位置的服务。它不必 24x7 全天候运行,但它应该在旅途中运行。以下是我迄今为止为确保其持续运行而实施的措施:
- 作为前台启动服务
- 使用“START_STICKY”
- 启动警报,每 10 分钟检查一次服务是否正在运行。如果没有,它会启动服务。
尽管采取了所有这些措施,但对于某些设备(例如 MI 3w),服务会在 10 分钟内被终止并且根本不会重新启动(即使等待 12 小时后也不会!)。从广泛的谷歌搜索中,我了解到当进程被操作系统杀死时,警报不会触发(如果我错了,请纠正我),所以这里可能就是这种情况。但是“START_STICKY”发生了什么?
所以我的查询是:
- START_STICKY 发生了什么?是操作系统错误(OS V6)吗?
- 为什么操作系统在杀死进程时取消所有设置的警报?
- 最重要的是如何确保我的服务在行程期间运行?
【问题讨论】: