【发布时间】:2019-01-28 10:01:26
【问题描述】:
在 Stack Overflow 上几乎没有类似的问题,但没有一个解决方案对我有用
问题在于只有少数设备,如 OnePlus 和 MI,一旦用户从最近的应用中滑动应用,该服务就会被终止。
我了解到这些 OEM 使用一些激进的策略来终止服务。我只是想知道有什么方法可以让服务保持运行或在它被杀死后立即启动它。
我需要运行一项服务,该服务将在后台连续 (24/7) 提供位置(此应用仅适用于特定人群,因此无需担心电池寿命)。
我试过了:
-
正在运行前台服务。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { startForegroundService(intent) } else { startService(intent) }同样在服务
onCreate方法以通知开始@Override public void onCreate() { Log.i("Service", "onCreate"); startForeground(NOTIFICATION_ID, getnotification()); } -
在
onStartCommand中返回START_STICKY@Override public int onStartCommand(Intent intent, int flags, int startId) { initLocationClient(); initLocationSyncThread(); return START_STICKY; } 在
onDestroy和onTaskRemoved中重新启动服务,但它们没有被调用。绑定服务
调度警报管理器并频繁启动服务,但 Play 商店会警告我们的应用程序使用警报管理器过于频繁,这是一种不好的做法。而且现在有办法使用 workmanager 安排不到 15 分钟,但仍然不能保证在 15 分钟后开始。
那么除了上述选项之外,还有其他方法可以继续运行服务吗?
【问题讨论】:
-
我从通知开始,但它仍然被杀死。
-
@NileshRathod 也尝试过,但 onDestroy 没有被调用。
标签: android android-service background-process periodic-task