Partager via


JobScheduler.Enqueue(JobInfo, JobWorkItem) Méthode

Définition

Similaire à , mais vous permet de #schedulemettre en file d’attente le travail pour un nouveau travail <em>ou existant</em> .

[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

Paramètres

job
JobInfo

Le travail pour lequel vous souhaitez mettre le travail en file d’attente. Pour android.app.job.JobInfo.Builder JobInfo.Builder plus d’informations sur les types de travaux que vous pouvez planifier.

work
JobWorkItem

Nouveau travail à mettre en file d’attente. Cette opération sera disponible ultérieurement lorsque le travail commence à s’exécuter.

Retours

résultat de la demande de file d’attente.

Attributs

Remarques

Similaire à , mais vous permet de #schedulemettre en file d’attente le travail pour un nouveau travail <em>ou existant</em> . Si un travail avec le même ID est déjà planifié, il sera remplacé par le nouveau JobInfo, mais tout travail précédemment mis en file d’attente restera et sera distribué la prochaine fois qu’il s’exécute. Si un travail portant le même ID est déjà en cours d’exécution, le nouveau travail est mis en file d’attente sans arrêter le travail.

Le travail que vous enquez est récupéré ultérieurement via JobParameters#dequeueWork() JobParameters.dequeueWork. Veillez à y voir comment traiter le travail ; l’acte de mise en file d’attente change la façon dont vous devez gérer le cycle de vie global d’un travail en cours d’exécution.

Il est fortement encouragé à utiliser la même JobInfo chose pour tous les travaux que vous enquez. Cela permettra au système de planifier de façon optimale le travail en même temps que tout travail en attente et/ou en cours d’exécution. Si le JobInfo change à partir de la dernière mise en file d’attente du travail, le système doit mettre à jour le JobInfo associé, ce qui peut entraîner une interruption dans l’exécution. En particulier, tout travail en cours d’exécution qui traite le travail précédent doit être arrêté et redémarré avec le nouveau JobInfo.

Il est recommandé d’éviter d’utiliser JobInfo.Builder#setExtras(PersistableBundle) ou JobInfo.Builder#setTransientExtras(Bundle) avec un JobInfo que vous utilisez pour mettre en file d’attente le travail. Le système essaiera de comparer ces extras avec l’ancien JobInfo, mais il existe des situations où il peut se faire mal et compter jobInfo comme changeant. (Cela dit, vous devez être relativement sûr avec un ensemble simple de données cohérentes dans ces champs.) Vous ne devez jamais utiliser JobInfo.Builder#setClipData(ClipData, int) avec le travail que vous mettez en file d’attente, car actuellement cela sera toujours traité comme un autre JobInfo, même si le contenu ClipData est exactement le même.

<p class="attention"><strong>Remarque :</strong> Planning a job can have a high cost, même s’il réécrit le même travail et le travail n’a pas exécuté, en particulier sur les versions de plateforme avant la version android.os.Build.VERSION_CODES#Q. Par conséquent, le système peut limiter les appels à cette API si des appels sont effectués trop fréquemment dans un court laps de temps.

<p class="attention"><strong>Remarque :</strong> Avant la version android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKEAndroid, JobWorkItems n’a pas pu être conservé. Les applications n’ont pas été autorisées à mettre en file d’attente JobWorkItems avec des travaux persistants et le système lèverait une IllegalArgumentException erreur s’ils tentaient de le faire. À compter de android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKE, JobWorkItems peut être conservé en même temps que le travail d’hébergement. Toutefois, les intentions ne peuvent pas être conservées. Définissez une PersistableBundle utilisation JobWorkItem.Builder#setExtras(PersistableBundle) pour toutes les informations qui doivent être conservées.

Remarque : Le composant JobService doit être activé pour planifier correctement un travail.

Documentation Java pour android.app.job.JobScheduler.enqueue(android.app.job.JobInfo, android.app.job.JobWorkItem).

Les parties de cette page sont des modifications basées sur le travail créé et partagé par le projet Android Open Source et utilisés en fonction des termes décrits dans la licence d’attribution Creative Commons 2.5.

S’applique à