Андроид О: служба не прекратила на фоне границы


Я сталкиваюсь со странным поведением с моим фоном Service, работающим на Android O .

Мой пример приложения использует targetSdkVersion 26

У меня есть простой сервис, который просто распечатывает некоторую информацию о состоянии и должен быть воссоздан с помощью START_STICKY:

class ServiceTest : Service() {

companion object {
    private val TAG = "ServiceTest"

    fun buildIntent(context: Context): Intent {
        return Intent(context, ServiceTest::class.java)
    }
}

override fun onBind(p0: Intent?): IBinder? {
    return null
}


override fun onCreate() {
    super.onCreate()
    Log.d(TAG, "onCreate")
}

override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
    Log.d(TAG, "onStartCommand: startId = " + startId)
    return START_STICKY
}

override fun onDestroy() {
    Log.d(TAG, "onDestroy")
    super.onDestroy()
}

}

Служба запускается в рамках действия:

startService(ServiceTest.buildIntent(applicationContext))

Когда я запускаю сервис и затем выхожу из приложения, нажав кнопку назад, все работает так, как ожидалось:

08-17 16:30:25.182 8980-8980/de.continental.android.androidoservicetest D/ServiceTest: onCreate
08-17 16:30:25.184 8980-8980/de.continental.android.androidoservicetest D/ServiceTest: onStartCommand: startId = 1
08-17 16:31:26.799 900-924/? W/ActivityManager: Stopping service due to app idle: u0a141 -1m1s629ms de.continental.android.androidoservicetest/.ServiceTest
08-17 16:31:26.804 8980-8980/de.continental.android.androidoservicetest D/ServiceTest: onDestroy

Но, если я запускаю сервис; оставьте приложение по нажав кнопку назад и, наконец, удалить приложение из списка последних приложений, смахнув его, мой сервис перезапускается, как и ожидалось (из-за START_STICKY). Но сервис не убивается ОС Android из-за ограничений фоновой работы после определенного периода времени. Похоже, что мой сервис постоянно работает, и ОС не останавливает его.

08-17 16:23:13.090 8914-8914/de.continental.android.androidoservicetest D/ServiceTest: onCreate
08-17 16:23:13.091 8914-8914/de.continental.android.androidoservicetest D/ServiceTest: onStartCommand: startId = 1
08-17 16:23:18.600 900-3234/? W/ActivityManager: Scheduling restart of crashed service de.continental.android.androidoservicetest/.ServiceTest in 1000ms
08-17 16:23:19.635 900-924/? I/ActivityManager: Start proc 8980:de.continental.android.androidoservicetest/u0a141 for service de.continental.android.androidoservicetest/.ServiceTest
08-17 16:23:20.158 8980-8980/? D/ServiceTest: onCreate
08-17 16:23:20.160 8980-8980/? D/ServiceTest: onStartCommand: startId = 3
Сталкивался ли кто-нибудь с такой же проблемой или имеет объяснение?
2 8

2 ответа:

Я думаю, что это настоящий баг, посмотрите: https://issuetracker.google.com/issues/64535598

Есть еще одна проблема в баг-трекере, которая указывает, что эта проблема исправлена:

Https://issuetracker.google.com/issues/65335068

К сожалению, информация о выпуске не была предоставлена.