2017-10-14 2 views
0
getötet

Dies ist, wie ich meine Arbeit ein:Jobscheduler Job wird abgebrochen, nachdem der Prozess

val builder = JobInfo.Builder(1, ComponentName(this, 
PullDataJob::class.java)) 
      .setPeriodic(1000L * 60 * 60) // one hour 
      .setRequiredNetworkType(NETWORK_TYPE_ANY) 
      .setPersisted(true) 
jobScheduler.schedule(builder.build()) 

Mein Testverfahren:

  1. Öffne meine App
  2. Verwenden adb shell dumpsys jobscheduler aktive Arbeitsplätze zu erhalten Liste. Mein Job kann in der Liste gesehen werden.
  3. Beseitigen Sie den Vorgang, indem Sie meine App aus der Liste Zuletzt verwenden.
  4. Verwenden Sie den gleichen Befehl und finden Sie heraus, dass mein Job weg ist.
  5. jobScheduler.allPendingJobs.size wird 0.
  6. Öffnen Sie meine App.
  7. Mein Job ist immer noch nicht in der aktiven Jobliste vorhanden, es sei denn, ich plane ihn manuell erneut (obwohl ich setPersisted(true) verwende).

Meine Testumgebung:

Hydrogen OS, Android 7.1.1, targetSdkVersion: 26.

Ist das Verhalten erwartet? Was kann ich tun, wenn ich möchte, dass der Job regelmäßig ausgeführt wird, selbst wenn die App gelöscht wird?

+0

Ja, es ist das gewünschte Verhalten. Aktionsnummer 3) gibt dem Benutzer die Möglichkeit, eine App dauerhaft von der CPU zu trennen. – Henry

+0

Probieren Sie diesen Link kann Ihnen helfen https://stackoverflow.com/questions/38410309/jobscheduler-requirednetworktypejobinfo-network-type-any-not-working –

+0

@AmjadKhan Wie diese zwei Fragen zueinander in Beziehung stehen ... – Null

Antwort

0

Ich habe das Problem identifiziert. Es gibt eine Optimierungsoption, die alle meine Jobs abbricht, wenn meine App geschlossen wird.

Es ist innen "Einstellungen" - "Batterie" - "Batterieoptimierung" - "Erweiterte Optimierung". (Meine Systemsprache ist nicht Englisch, so ist es eine ungefähre Übersetzung)

Verwandte Themen