Android O: Servicio no detenido por límites de ejecución de fondo

Me encuentro con un comportamiento extraño con mi Service fondo que se ejecuta en Android.

Mi aplicación de ejemplo utiliza targetSdkVersion 26

Tengo un servicio simple, que sólo imprime alguna información de estado y se volverá a crear usando 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() } } 

El servicio se inicia dentro de una Actividad:

 startService(ServiceTest.buildIntent(applicationContext)) 

Cuando inicio el servicio y salgo de la aplicación después presionando el botón Atrás, todo funciona como se esperaba:

 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 

Pero, si comienzo el servicio; Deje la aplicación pulsando el botón Atrás y, finalmente, quitar la aplicación de la lista de aplicaciones recientes, borrándola, mi servicio se reinicia como se esperaba (debido a START_STICKY). Sin embargo, el servicio no se ejecuta en el sistema operativo Android debido a los límites de operación en segundo plano tras un período de tiempo definido. Parece que mi servicio está funcionando continuamente y el sistema operativo no lo detiene.

 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 

¿Alguien se ha enfrentado al mismo problema o tiene una explicación?

One Solution collect form web for “Android O: Servicio no detenido por límites de ejecución de fondo”

Creo que es un error real, echa un vistazo: https://issuetracker.google.com/issues/64535598

  • ¿Cómo iniciar el servicio con Alarm Manager en Android?
  • Throwable: No se pudo crear la tarjeta SD
  • Nombre de la Actividad o Receptor que llama al Servicio
  • Cómo cancelar un servicio de primer plano de usar la notificación (borrar descartar) o borrar todas las notificaciones?
  • Android - Notificación incorrecta publicada - No se pudo expandir RemoteViews para: StatusBarNotification
  • Por favor, explique algunos conceptos de servicio de Android
  • Servicio enlazado a BroadcastReceiver
  • Aplicación de Android como servicio sin actividad
  • StopService () detendrá un servicio de primer plano?
  • Java.lang.IllegalAccessError ref de clase en la clase preverified resuelto a la implementación inesperada
  • ¿Cómo puedo ejecutar un servicio en un hilo separado?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.