Aby zacząć korzystać z WorkManagera, zaimportuj bibliotekę do Androida w projektach AI.
Dodaj te zależności do pliku build.gradle
aplikacji:
Odlotowe
dependencies { def work_version = "2.9.1" // (Java only) implementation "androidx.work:work-runtime:$work_version" // Kotlin + coroutines implementation "androidx.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "androidx.work:work-rxjava2:$work_version" // optional - GCMNetworkManager support implementation "androidx.work:work-gcm:$work_version" // optional - Test helpers androidTestImplementation "androidx.work:work-testing:$work_version" // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
Kotlin
dependencies { val work_version = "2.9.1" // (Java only) implementation("androidx.work:work-runtime:$work_version") // Kotlin + coroutines implementation("androidx.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("androidx.work:work-rxjava2:$work_version") // optional - GCMNetworkManager support implementation("androidx.work:work-gcm:$work_version") // optional - Test helpers androidTestImplementation("androidx.work:work-testing:$work_version") // optional - Multiprocess support implementation("androidx.work:work-multiprocess:$work_version") }
Po dodaniu zależności i zsynchronizowaniu projektu Gradle Kolejny krok to określenie pracy do wykonania.
Zdefiniuj utwór
Praca jest określana za pomocą atrybutu Worker
zajęcia. Metoda doWork()
działa asynchronicznie w tle
w wątku udostępnianym przez usługę WorkManager.
Aby utworzyć zadanie do uruchomienia przez WorkManager, rozwiń klasę Worker
i
zastąpi metodę doWork()
. Aby na przykład utworzyć plik Worker
, który przesyła pliki
możesz wykonać te czynności:
Kotlin
class UploadWorker(appContext: Context, workerParams: WorkerParameters): Worker(appContext, workerParams) { override fun doWork(): Result { // Do the work here--in this case, upload the images. uploadImages() // Indicate whether the work finished successfully with the Result return Result.success() } }
Java
public class UploadWorker extends Worker { public UploadWorker( @NonNull Context context, @NonNull WorkerParameters params) { super(context, params); } @Override public Result doWork() { // Do the work here--in this case, upload the images. uploadImages(); // Indicate whether the work finished successfully with the Result return Result.success(); } }
Result
zwrócona z doWork()
informuje usługę WorkManager, czy
czy praca została wykonana pomyślnie, a w przypadku niepowodzenia –
podjęto próbę ponowienia próby.
Result.success()
: zadanie zakończyło się powodzeniem.Result.failure()
: nie udało się wykonać zadania.Result.retry()
: nie udało się wykonać zadania i należy spróbować ponownie później zgodnie ze swoim spróbuj ponownie.
Utwórz żądanie WorkRequest
Zdefiniowaną pracę należy zaplanować w usłudze WorkManager w przed uruchomieniem. WorkManager oferuje dużą elastyczność planowania w naszej pracy. Możesz zaplanować jego uruchamianie okresowo w wybranym okresie. Możesz też zaplanować, by uruchomiły się tylko 1 raz .
Niezależnie od tego, jak zaplanujesz zadanie, będziesz zawsze korzystać z
WorkRequest
Chociaż
Worker
określa jednostkę pracy:
WorkRequest
(i jej
podklas) definiują sposób i czas jego uruchamiania. W najprostszym przypadku możesz
użyj
OneTimeWorkRequest
,
jak w poniższym przykładzie.
Kotlin
val uploadWorkRequest: WorkRequest = OneTimeWorkRequestBuilder<UploadWorker>() .build()
Java
WorkRequest uploadWorkRequest = new OneTimeWorkRequest.Builder(UploadWorker.class) .build();
Przesyłanie żądania WorkRequest do systemu
Na koniec musisz przesłać WorkRequest
do WorkManager
za pomocą
enqueue()
.
Kotlin
WorkManager .getInstance(myContext) .enqueue(uploadWorkRequest)
Java
WorkManager .getInstance(myContext) .enqueue(uploadWorkRequest);
Dokładny czas wykonania instancji roboczej zależy od
ograniczeń stosowanych w WorkRequest
i optymalizacji systemu.
Usługa WorkManager została zaprojektowana w taki sposób, aby zapewniać najlepsze działanie w ramach tych ograniczeń.
Dalsze kroki
Ten przewodnik dla początkujących zawiera jedynie obserwację. WorkRequest
może
zawierają również dodatkowe informacje, takie jak ograniczenia, w ramach których
praca powinna być uruchomiona, dane wejściowe do pracy, zasady opóźnienia i wycofywania dla ponawiania próby
w naszej pracy. W następnej sekcji Określ zakres zadań
,
dowiedz się więcej o tych opcjach i zrozumiej,
jak zaplanować niepowtarzalne i powtarzające się zadania.
Dodatkowe materiały
Oprócz materiałów w przewodnikach dostępnych jest kilka blogów, ćwiczeń z programowania i kodu przykłady, które ułatwią Ci rozpoczęcie pracy.
Próbki
- WorkManagerSample, To prosta aplikacja do przetwarzania obrazów.
- Słonecznik, aplikacja demonstracyjna prezentująca sprawdzone metody o różnej architekturze. , w tym także z WorkManagera.
Ćwiczenia z programowania
- Praca z WorkManagerem (Kotlin) i (Java)
- Zaawansowany menedżer roboczy (Kotlin)
Blogi
- Przedstawiamy WorkManagera
- WorkManager – podstawy
- WorkManager i Kotlin
- Okres ważności w usłudze WorkManager
- Dostosowywanie platformy WorkManager – podstawy
- Dostosowywanie menedżera WorkManagera za pomocą daggera