Ich stoße auf ein seltsames Verhalten mit meinem Hintergrund Service
läuft auf Android O.Android O: Service nicht von Hintergrund Ausführungsgrenzen gestoppt
Meine Beispielanwendung verwendet targetSdkVersion 26
ich einen einfachen Dienst haben, die nur einige Informationen Zustand druckt und wird START_STICKY
mit neu erstellt werden:
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()
}
}
Der Dienst wird innerhalb einer Aktivität:
startService(ServiceTest.buildIntent(applicationContext))
Wenn ich den Dienst starte und die App danach durch Drücken der Zurück-Taste verlasse, funktioniert alles wie erwartet:
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
Aber, wenn ich den Service beginne; Verlassen Sie die App durch Drücken der Zurück-Taste und entfernen Sie die App aus der Liste der zuletzt verwendeten Apps, indem Sie sie wegwischen. Mein Dienst wird wie erwartet neu gestartet (aufgrund von START_STICKY). Der Dienst wird jedoch nicht von Android OS aufgrund von Hintergrundoperationslimits nach einem definierten Zeitraum beendet. Es scheint, dass mein Dienst kontinuierlich läuft und das Betriebssystem nicht stoppt.
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
Hat jemand das gleiche Problem oder hat eine Erklärung?
Was ist Ihr targetSdkVersion? –
targetSdkVersion ist 26 – Christopher
Ich war im Begriff, die gleiche Frage zu stellen. Ich sehe genau das gleiche Verhalten. Ist das ein Fehler? –