Begränsningar och schemaläggning
Kör arbete under rätt förutsättningar.
Begränsningar och schemaläggning är en gratis lektion i Android Academy på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Android Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Android Academy innehåller totalt 4 lektioner.
Begränsningar och schemaläggning
En Worker definierar vad som ska göras. En WorkRequest definierar när och under vilka villkor det ska köras. Ni skapar en begäran, kopplar begränsningar till den och lägger den i kön.
Vad begränsningar är
Begränsningar är villkor som måste vara uppfyllda innan arbetet körs, till exempel att det finns en nätverksanslutning eller att enheten laddas. WorkManager väntar tills villkoren är uppfyllda.
Skapa begränsningar
Använd Constraints.Builder för att deklarera era krav.
val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.UNMETERED)
.setRequiresCharging(true)
.build()Vanliga typer av begränsningar
Vanliga begränsningar är:
setRequiredNetworkType(CONNECTED, UNMETERED med flera)setRequiresChargingsetRequiresBatteryNotLowsetRequiresDeviceIdlesetRequiresStorageNotLow
Skapa en OneTimeWorkRequest
För arbete som ska köras en gång använder ni OneTimeWorkRequestBuilder, parametriserad med er worker-klass, och kopplar begränsningarna till den.
val request = OneTimeWorkRequestBuilder<UploadWorker>()
.setConstraints(constraints)
.build()Skicka indata
Koppla indata till begäran med setInputData; workern läser dem via inputData.
val request = OneTimeWorkRequestBuilder<UploadWorker>()
.setInputData(workDataOf("user_id" to "42"))
.setConstraints(constraints)
.build()Lägga arbetet i kön
Hämta instansen av WorkManager och anropa enqueue. WorkManager sparar begäran och kör den när begränsningarna är uppfyllda.
WorkManager.getInstance(context).enqueue(request)Policy för omförsök
När en worker returnerar retry() väntar WorkManager innan den försöker igen. Konfigurera strategin med setBackoffCriteria och välj linjär eller exponentiell fördröjning.
val request = OneTimeWorkRequestBuilder<UploadWorker>()
.setBackoffCriteria(
BackoffPolicy.EXPONENTIAL,
10, TimeUnit.SECONDS
)
.build()Unikt arbete
Undvik att schemalägga duplicerade jobb genom att använda enqueueUniqueWork med ett namn och en konfliktpolicy (KEEP, REPLACE eller APPEND).
WorkManager.getInstance(context).enqueueUniqueWork(
"sync_job",
ExistingWorkPolicy.KEEP,
request
)Övervaka arbetets tillstånd
Ni kan övervaka en begärans status (ENQUEUED, RUNNING, SUCCEEDED, FAILED) via getWorkInfoByIdFlow eller LiveData, vilket är användbart när förlopp ska visas i användargränssnittet.
WorkManager.getInstance(context)
.getWorkInfoByIdFlow(request.id)
.collect { info -> /* react to info.state */ }Lägga till taggar
Tagga begäranden med addTag så att ni senare kan söka efter eller avbryta grupper av relaterat arbete med hjälp av taggen, till exempel genom att avbryta allt "upload"-arbete på en gång.
Snabb kontroll
Testa er förståelse av begränsningar och schemaläggning.
Sammanfattning
Ni schemalade arbete med begränsningar:
Constraints.Builderanger villkor som nätverk och laddningOneTimeWorkRequestBuilderskapar begäranenqueue/enqueueUniqueWorkskickar in den- Konfigurera fördröjning vid omförsök, övervaka tillstånd och tagga arbete
Nästa avsnitt: periodiskt och kedjat arbete.
Lär dig Kotlin med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 36
- Lektioner
- 152
Vanliga frågor
Är lektionen ”Begränsningar och schemaläggning” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Android Academy, inklusive ”Begränsningar och schemaläggning”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Android Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Begränsningar och schemaläggning”?
Kör arbete under rätt förutsättningar. Ni övar på Android Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Android Academy?
Du behöver inga förkunskaper. Utbildningen i Android Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”Begränsningar och schemaläggning”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Android Academy-lektionen?
Ja. Varje Android Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- När ska WorkManager användas?
- Skapa en Worker
- Begränsningar och schemaläggning
- Periodiskt och kedjat arbete