【发布时间】:2018-07-08 23:44:28
【问题描述】:
即使应用程序被终止,我也想在后台运行服务。此功能在某些设备上运行良好。但是在 oppo、mi 和 Vivo 手机中,如果应用程序被杀死,它就不会运行。我怎样才能为这些设备做到这一点
【问题讨论】:
即使应用程序被终止,我也想在后台运行服务。此功能在某些设备上运行良好。但是在 oppo、mi 和 Vivo 手机中,如果应用程序被杀死,它就不会运行。我怎样才能为这些设备做到这一点
【问题讨论】:
【讨论】:
为了让服务在中国制造的设备中持续在后台运行,我们必须使用多种方式来覆盖它。
在应用程序设置中启用自动启动权限。对于自动启动代码,您可以使用:- [https://github.com/judemanutd/AutoStarter][1]
在中国设备上,如果您没有在应用设置中启用自动启动选项,则不会调用 onTaskRemoved。
onTaskRemoved 中文设备只有在你允许自动启动权限后才会被调用。
在Service的onTaskRemoved中添加这段代码sn-p:-
override fun onTaskRemoved(rootIntent: Intent?) {
log("onTaskRemoved is called::")
val restartServiceTask = Intent(applicationContext, EndlessService::class.java)
restartServiceTask.setPackage(packageName)
restartServiceTask.action = Actions.START.toString()
val pendingIntent = PendingIntent.getService(this, 1, restartServiceTask, PendingIntent.FLAG_ONE_SHOT)
val alarmManager = getSystemService(ALARM_SERVICE) as AlarmManager
alarmManager[AlarmManager.RTC_WAKEUP, SystemClock.elapsedRealtime() + 1000] =
pendingIntent
super.onTaskRemoved(rootIntent)
}
【讨论】: