【问题标题】:Background Service is not restarting after killed in oppo, vivo, mi android version 7.1.2在oppo、vivo、mi android 7.1.2版本下后台服务不重启
【发布时间】:2018-07-08 23:44:28
【问题描述】:

即使应用程序被终止,我也想在后台运行服务。此功能在某些设备上运行良好。但是在 oppo、mi 和 Vivo 手机中,如果应用程序被杀死,它就不会运行。我怎样才能为这些设备做到这一点

【问题讨论】:

    标签: android service


    【解决方案1】:
    1. 我在 Oppo、Vivo、Mi 等手机上遇到了同样的问题,从最近的应用程序中删除后,应用程序被杀死,甚至服务也被杀死

      解决方案: 我在我的应用程序中添加了this 之类的自动启动权限,它起作用了。

    2. 解决此问题后,由于打盹模式,我的应用在后台运行一段时间后被冻结/终止

    解决方案: 对于这种情况this 工作,现在我的应用程序在任何设备的后台运行

    【讨论】:

    • 如果这能解决您的问题,请接受/支持答案
    • 对我不起作用。知道我们可以避免服务被杀死的任何其他方法吗?
    • 请分享您的代码,这个答案一定会对您有所帮助
    • @AminPinjari 我已经尝试过你的建议,现在我的应用可以在一加和 MI 设备上运行,但不适用于 OPPO。你能分享一些示例代码吗?提前致谢
    • 您找到解决方案了吗?抱歉迟到了
    【解决方案2】:

    为了让服务在中国制造的设备中持续在后台运行,我们必须使用多种方式来覆盖它。

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

    2. 在中国设备上,如果您没有在应用设置中启用自动启动选项,则不会调用 onTaskRemoved。

    3. 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)
        } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 2020-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      相关资源
      最近更新 更多