JobScheduler.Enqueue(JobInfo, JobWorkItem) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ä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 JobInfo
ersetzt, 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.dequeueWork
abgerufen. 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_CAKE
Ab , 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.
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.