gpt4 book ai didi

android - JobService 不会在 android 9 中重新安排

转载 作者:太空狗 更新时间:2023-10-29 13:46:00 25 4
gpt4 key购买 nike

我正在尝试让我的应用程序在 Android 9 上运行。以下代码适用于 Android 8,但由于某种原因,JobService 不会在 Android 9 上重新安排。它是第一次安排但没有根据设置的周期重新安排。

class RetrieveJobService : JobService() {

override fun onStartJob(params: JobParameters): Boolean {
doBackgroundWork(params)
return true
}

private fun doBackgroundWork(params: JobParameters) {
Thread {
try {
doRetrieveBackgroundStuff(this)
jobFinished(params, false)
} catch (e: Exception) {
jobFinished(params, false)
}
}.start()
}

override fun onStopJob(params: JobParameters): Boolean {
return false
}

}

这是我的 JobInfo.Builder

val builder = JobInfo.Builder(jobID, componentName)
.setPersisted(true)

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
builder.setPeriodic(millis, 15 * 60 * 1000) //15 min
} else {
builder.setPeriodic(millis)
}
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)

val scheduler = context.getSystemService(JOB_SCHEDULER_SERVICE) as
JobScheduler
val resultCode = scheduler.schedule(builder.build())

有什么想法吗?编辑:需要说明的是,此代码在 Android 8 及以下版本上运行良好,并且在运行 Android 9 的 Android Studio 模拟器上也能正常运行。据我测试,它不适用于任何运行 Android 9 的物理设备。

最佳答案

如果你通过THE LINK ,你会发现:

Unfortunately, some devices implement killing the app from the recents menu as a force stop. Stock Android does not do this. When an app is force stopped, it cannot execute jobs, receive alarms or broadcasts, etc. So unfortunately, it's infeasible for us to address it - the problem lies in the OS and there is no workaround.

这是一个已知问题。为了节省电量,许多厂商强制关闭应用程序,从而取消所有周期任务、警报和广播接收器等。主要厂商是 OnePlus(您可以选择切换)、Redmi、Vivo、Oppo、Huwaei。

UPDATE

这些设备中的每一个都有 AutoStartManagers/AutoLaunch/StartManager 类型的优化管理器。这可以防止后台 Activity 再次启动。您将不得不手动要求用户将您的应用程序列入白名单,以便该应用程序可以自动启动其后台进程。关注THISTHIS链接,了解更多信息。

不同厂商加入白名单的方法在this stackoverflow answer中给出。 .即使添加到白名单后,您的应用程序也可能因为 DOZE 模式而无法运行,为此您必须 ignore battery otimizations

此外,如果您可能想知道,这些 AutoStart 管理器已经将 Gmail/Hangout/WhatsApp/Slack/LinkedIn 等应用列入白名单。因此,对它们的后台进程没有影响。您总是会及时收到更新和通知。

关于android - JobService 不会在 android 9 中重新安排,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54295161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com