Condividi tramite


JobScheduler.Enqueue(JobInfo, JobWorkItem) Metodo

Definizione

Simile a #schedule, ma consente di accodare il lavoro per un nuovo <processo em>o esistente</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

Parametri

job
JobInfo

Il lavoro per cui si vuole accodare il lavoro. Per android.app.job.JobInfo.Builder JobInfo.Builder altri dettagli sui tipi di processi che è possibile pianificare, vedere.

work
JobWorkItem

Nuovo lavoro da accodare. Sarà disponibile in un secondo momento all'avvio dell'esecuzione del processo.

Restituisce

risultato della richiesta di accodamento.

Attributi

Commenti

Simile a #schedule, ma consente di accodare il lavoro per un nuovo <processo em>o esistente</em> . Se un processo con lo stesso ID è già pianificato, verrà sostituito con il nuovo JobInfo, ma qualsiasi lavoro accodato in precedenza rimarrà e verrà inviato alla successiva esecuzione. Se un processo con lo stesso ID è già in esecuzione, il nuovo lavoro verrà accodato senza arrestare il processo.

Il lavoro accodato viene recuperato successivamente tramite JobParameters#dequeueWork() JobParameters.dequeueWork. Assicurarsi di vedere lì su come elaborare il lavoro; l'atto di accodamento delle modifiche al lavoro come gestire il ciclo di vita complessivo di un processo in esecuzione.

Si consiglia vivamente di usare lo stesso JobInfo per tutto il lavoro accodato. Ciò consentirà al sistema di pianificare in modo ottimale il lavoro insieme a qualsiasi lavoro in sospeso e/o attualmente in esecuzione. Se JobInfo cambia dall'ultima volta che il processo è stato accodato, il sistema dovrà aggiornare l'elemento JobInfo associato, che può causare un'interruzione dell'esecuzione. In particolare, questo può comportare l'arresto e il riavvio di qualsiasi processo in esecuzione che sta elaborando il lavoro precedente e riavviato con il nuovo JobInfo.

È consigliabile evitare di usare JobInfo.Builder#setExtras(PersistableBundle) o JobInfo.Builder#setTransientExtras(Bundle) con jobInfo che si sta usando per accodare il lavoro. Il sistema tenterà di confrontare questi extra con l'elemento JobInfo precedente, ma ci sono situazioni in cui potrebbe verificarsi un problema e contare JobInfo come modifica. Ciò detto, è consigliabile essere relativamente sicuri con un semplice set di dati coerenti in questi campi. Non dovresti mai usare JobInfo.Builder#setClipData(ClipData, int) con il lavoro che stai accodando, perché attualmente questo verrà sempre considerato come un JobInfo diverso, anche se il contenuto di ClipData è esattamente lo stesso.

<p class="caution"><strong>Note:</strong> Scheduling a job can have a high cost, even if it's rescheduling the same job and the job not execute, special on platform versions before version android.os.Build.VERSION_CODES#Q. Di conseguenza, il sistema può limitare le chiamate a questa API se le chiamate vengono effettuate troppo frequentemente in un breve periodo di tempo.

<p class="caution"strong Note:/strong Prior to Android version , JobWorkItems could not be persisted.p class="caution"><strong Note:</strong> Prior to Android version android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKE, JobWorkItems could not>be persisted. Le app non erano autorizzate a accodare JobWorkItems con processi persistenti e il sistema generava un'eccezione IllegalArgumentException se tentassero di farlo. android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKEA partire da , JobWorkItems può essere salvato in modo permanente insieme al processo di hosting. Tuttavia, le finalità non possono essere mantenute. Impostare un PersistableBundle oggetto using JobWorkItem.Builder#setExtras(PersistableBundle) per le informazioni che devono essere mantenute.

Nota: il componente JobService deve essere abilitato per pianificare correttamente un processo.

Documentazione java per android.app.job.JobScheduler.enqueue(android.app.job.JobInfo, android.app.job.JobWorkItem).

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.

Si applica a