0Pricing
Android Academy · Lekcja

Praca okresowa i łańcuchowa

Powtarzaj zadania w tle i wykonuj je sekwencyjnie

Praca okresowa i łańcuchowa to bezpłatna lekcja Android Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Android Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Android Academy zawiera 4 lekcji w sumie.

Praca okresowa i połączona w łańcuch

Oprócz zadań wykonywanych jednorazowo WorkManager może powtarzać pracę zgodnie z harmonogramem oraz łączyć wiele workerów w łańcuch, aby uruchamiać je sekwencyjnie. Ta lekcja obejmuje oba zagadnienia.

PeriodicWorkRequest

W przypadku pracy cyklicznej użyj PeriodicWorkRequestBuilder, określając interwał powtórzeń. WorkManager ponownie uruchamia workera raz na każdy interwał.

val periodic = PeriodicWorkRequestBuilder<SyncWorker>(
    repeatInterval = 1,
    repeatIntervalTimeUnit = TimeUnit.HOURS
).build()

Minimalny interwał 15 minut

Minimalny interwał powtórzeń wynosi 15 minut. Żądania z krótszym interwałem zostaną ograniczone do 15 minut. Chroni to baterię — WorkManager nie służy do precyzyjnego odliczania sekund.

Praca okresowa nie jest dokładna

Interwał jest wskazówką, a nie precyzyjnym zegarem. System może uruchomić pracę później, aby grupować zadania i oszczędzać energię. Nie należy polegać na tym mechanizmie w zadaniach wymagających dokładnego czasu wykonania.

Umieszczanie unikatowej pracy okresowej w kolejce

Użyj enqueueUniquePeriodicWork, aby podczas kolejnych uruchomień aplikacji nie tworzyć wielu kopii tego samego zadania okresowego.

WorkManager.getInstance(context).enqueueUniquePeriodicWork(
    "daily_sync",
    ExistingPeriodicWorkPolicy.KEEP,
    periodic
)

Czym jest łączenie w łańcuch

Łączenie w łańcuch uruchamia workery w określonej kolejności: etap B rozpoczyna się dopiero po pomyślnym zakończeniu etapu A. Dane wyjściowe jednego etapu stają się danymi wejściowymi następnego.

beginWith i then

Rozpocznij łańcuch za pomocą beginWith i dodaj kolejne etapy za pomocą then. Wywołaj enqueue, aby przesłać cały łańcuch do wykonania.

WorkManager.getInstance(context)
    .beginWith(compressRequest)
    .then(uploadRequest)
    .then(cleanupRequest)
    .enqueue()

Dane przepływają przez łańcuch

Dane wyjściowe Data jednego workera są przekazywane jako dane wejściowe następnego. Dzięki temu compressRequest może zwrócić ścieżkę pliku, którą uploadRequest odczyta ze swojego inputData.

Równoległe etapy w łańcuchu

Możesz uruchomić kilka workerów równolegle, przekazując listę do beginWith; następne wywołanie then zaczeka na zakończenie wszystkich z nich.

WorkManager.getInstance(context)
    .beginWith(listOf(downloadA, downloadB))
    .then(mergeRequest)
    .enqueue()

Błąd zatrzymuje łańcuch

Jeśli dowolny worker zwróci Result.failure(), pozostałe etapy łańcucha zostaną anulowane. Zwrócenie retry() wstrzymuje jednak łańcuch do czasu pomyślnego zakończenia tego etapu.

Łączenie z ograniczeniami

Każde żądanie w łańcuchu oraz każde żądanie okresowe może mieć własne ograniczenia. Na przykład tylko etap wysyłania może wymagać sieci bez limitu transferu, podczas gdy kompresja może działać w dowolnym momencie.

Szybkie sprawdzenie

Sprawdź swoją wiedzę na temat pracy okresowej i pracy połączonej w łańcuch.

Podsumowanie

Poznał(a) Pan/Pani pracę okresową i połączoną w łańcuch:

  • PeriodicWorkRequestBuilder powtarza pracę; minimum to 15 minut, a czas nie jest dokładny
  • beginWith().then() łączy workery w sekwencji
  • Dane wyjściowe przepływają z jednego etapu do następnego; listy uruchamiają etapy równolegle
  • Błąd anuluje łańcuch; każdy etap może mieć własne ograniczenia

Ukończył(a) Pan/Pani kurs WorkManager.

Często zadawane pytania

Czy lekcja „Praca okresowa i łańcuchowa” jest bezpłatna?

Tak — pełny tekst „Praca okresowa i łańcuchowa” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Android Academy, przejdź na CoddyKit PRO. Kurs Android Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Praca okresowa i łańcuchowa”?

Powtarzaj zadania w tle i wykonuj je sekwencyjnie Ćwiczysz Android Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Android Academy?

Nie wymagamy żadnego doświadczenia. Android Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Praca okresowa i łańcuchowa”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Android Academy?

Tak. Każda lekcja Android Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Kiedy używać WorkManager
  2. Tworzenie Worker
  3. Ograniczenia i harmonogramowanie
  4. Praca okresowa i łańcuchowa
← Powrót do Android Academy