即使应用程序被杀死,我希望能够在后台运行服务。这个功能在一些设备上可以正常工作。但是在oppo、小米和vivo手机上,如果应用程序被杀死,它就无法运行。如何在这些设备上实现这个功能?
在应用程序设置中启用自动启动权限。对于自动启动代码,您可以使用此代码:[https://github.com/judemanutd/AutoStarter][1]
如果您没有在应用程序设置中启用自动启动选项,则在中国设备上不会调用onTaskRemoved。
在中国设备上,只有在允许自动启动权限后才会调用onTaskRemoved。
在Service的onTaskRemoved中添加此代码片段:
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)
}