Freigeben über


JobScheduler.Enqueue(JobInfo, JobWorkItem) Methode

Definition

Ähnlich wie #schedule, aber Sie können Arbeit für einen neuen <Em>- oder vorhandenen</em-Auftrag> enqueue.

[Android.Runtime.Register("enqueue", "(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;)I", "GetEnqueue_Landroid_app_job_JobInfo_Landroid_app_job_JobWorkItem_Handler", ApiSince=26)]
public abstract int Enqueue (Android.App.Job.JobInfo job, Android.App.Job.JobWorkItem work);
[<Android.Runtime.Register("enqueue", "(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;)I", "GetEnqueue_Landroid_app_job_JobInfo_Landroid_app_job_JobWorkItem_Handler", ApiSince=26)>]
abstract member Enqueue : Android.App.Job.JobInfo * Android.App.Job.JobWorkItem -> int

Parameter

job
JobInfo

Der Job, für den Sie arbeiten möchten. Weitere Informationen zu den Arten von Aufträgen, die Sie planen können, finden android.app.job.JobInfo.Builder JobInfo.Builder Sie hier.

work
JobWorkItem

Neue Arbeit zur Warteschlange. Dies wird später verfügbar sein, wenn der Auftrag gestartet wird.

Gibt zurück

das Ergebnis der Enqueue-Anforderung.

Attribute

Hinweise

Ähnlich wie #schedule, aber Sie können Arbeit für einen neuen <Em>- oder vorhandenen</em-Auftrag> enqueue. Wenn ein Auftrag mit derselben ID bereits geplant ist, wird er durch das neue JobInfoersetzt, aber alle zuvor enqueuierten Arbeiten bleiben erhalten und werden bei der nächsten Ausführung verteilt. Wenn ein Auftrag mit derselben ID bereits ausgeführt wird, wird die neue Arbeit für den Auftrag abgefragt, ohne den Auftrag zu beenden.

Die Arbeit, die Sie enqueue, wird später durch JobParameters#dequeueWork() JobParameters.dequeueWorkabgerufen. Achten Sie darauf, dass Sie dort sehen, wie Arbeit verarbeitet werden kann; Der Akt der Warteschlange von Arbeitsänderungen, wie Sie den Gesamtlebenszyklus eines ausgeführten Auftrags behandeln sollten.

Es wird dringend empfohlen, dass Sie dasselbe JobInfo für alle Arbeiten verwenden, die Sie enqueue. Dies ermöglicht es dem System, die Arbeit zusammen mit ausstehenden und/oder derzeit ausgeführten Arbeiten optimal zu planen. Wenn sich die JobInfo von der letzten Warteschlange des Auftrags ändert, muss das System die zugeordnete JobInfo aktualisieren, was zu einer Unterbrechung der Ausführung führen kann. Dies kann insbesondere dazu führen, dass jeder aktuell ausgeführte Auftrag, der vorherige Arbeit verarbeitet, beendet und mit der neuen JobInfo neu gestartet wird.

Es wird empfohlen, die Verwendung JobInfo.Builder#setExtras(PersistableBundle) oder JobInfo.Builder#setTransientExtras(Bundle) mit einer JobInfo zu vermeiden, die Sie für die Queue-Arbeit verwenden. Das System versucht, diese Extras mit der vorherigen JobInfo zu vergleichen, aber es gibt Situationen, in denen es falsch wird und die JobInfo als geändert gezählt wird. (Das heißt, Sie sollten mit einem einfachen Satz konsistenter Daten in diesen Feldern relativ sicher sein.) Sie sollten niemals mit Der Arbeit arbeiten JobInfo.Builder#setClipData(ClipData, int) , die Sie enqueuing, da dies derzeit immer als andere JobInfo behandelt wird, auch wenn die ClipData-Inhalte genau gleich sind.

<p class="strong Note:><</strong> Scheduling a job can have a high cost, even if it's rescheduling the same job and the job didn't execute, especially on platform versions before versionandroid.os.Build.VERSION_CODES#Q.> Daher kann das System Aufrufe dieser API drosseln, wenn Aufrufe in kurzer Zeit zu häufig ausgeführt werden.

<p class="><strong Note:</strong> Prior to Android versionandroid.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKE, JobWorkItems could not>be persisted. Apps konnten JobWorkItems nicht mit beibehaltenen Aufträgen enqueue, und das System würde eine IllegalArgumentException Warteschlange auslösen, wenn sie versucht haben, dies zu tun. android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKEAb , JobWorkItems können zusammen mit dem Hostingauftrag beibehalten werden. Absichten können jedoch nicht beibehalten werden. Legen Sie eine PersistableBundle Verwendung JobWorkItem.Builder#setExtras(PersistableBundle) für alle Informationen fest, die beibehalten werden müssen.

Hinweis: Die JobService-Komponente muss aktiviert sein, um einen Auftrag erfolgreich zu planen.

Java-Dokumentation für android.app.job.JobScheduler.enqueue(android.app.job.JobInfo, android.app.job.JobWorkItem).

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Gilt für: