在oppo,vivo,mi android版本7.1.2中杀死后,后台服务没有重新启动

时间:2018-01-30 06:49:31

标签: android service

即使应用程序被杀,我也希望在后台运行服务。此功能在某些设备上正常运行。但是在oppo,mi和vivo手机中,如果app被杀,它就不会运行。我该如何为这些设备执行此操作

1 个答案:

答案 0 :(得分:0)

要使服务在中国制造的设备中在后台连续运行,我们必须使用多种方式进行覆盖。

  1. 在应用程序设置中启用自动启动权限。对于自动启动代码,可以使用以下代码:-[https://github.com/judemanutd/AutoStarter] [1]

  2. 在中文设备中,如果尚未在应用程序设置中启用自动启动选项,则不会调用onTaskRemoved。

  3. onTask仅在您允许自动启动权限之后,才会调用在中文设备中删除的。

在服务的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)
    }