Podstawy korutyn i zakresów
Uruchamiaj korutyny we właściwym zakresie
Podstawy korutyn i zakresów to bezpłatna lekcja Android Academy na CoddyKit. To lekcja 1 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.
Czym są korutyny?
Korutyny umożliwiają pisanie asynchronicznego, nieblokującego kodu w stylu sekwencyjnym. Są odpowiedzią Kotlina na wywołania zwrotne i wątki w zadaniach takich jak operacje wejścia-wyjścia sieciowe i bazodanowe.
Funkcje suspend
Funkcja oznaczona jako suspend może się wstrzymać bez blokowania wątku, a następnie wznowić działanie. Można ją wywołać tylko z korutyny lub innej funkcji suspend.
suspend fun fetchUser(): User {
delay(1000) // non-blocking pause
return User(1, "Ada", "ada@x.com")
}Wstrzymywanie a blokowanie
delay wstrzymuje korutynę, ale zwalnia wątek do innych zadań. Thread.sleep blokuje cały wątek. Korutyny preferują wstrzymywanie, aby działać wydajnie.
Uruchamianie korutyny
Korutynę uruchamia się za pomocą launch w obiekcie CoroutineScope. Działa współbieżnie i nie zwraca wyniku.
scope.launch {
val user = fetchUser()
println(user.name)
}Pobieranie wyniku za pomocą async
Użyj async, gdy potrzebujesz otrzymać wartość. Zwraca on obiekt Deferred, na którym wywołuje się await.
val deferred = scope.async { fetchUser() }
val user = deferred.await()Czym jest CoroutineScope?
Zakres określa czas życia uruchomionych w nim korutyn. Anulowanie zakresu powoduje anulowanie wszystkich jego korutyn. Jest to strukturalna współbieżność.
Strukturalna współbieżność
Ponieważ korutyny działają wewnątrz zakresu, nie mogą przypadkowo działać dłużej niż on. Zapobiega to wyciekom: gdy ekran znika, jego zakres zostaje anulowany, a jego praca zostaje zatrzymana.
Anulowanie
Anulowanie zakresu lub zadania powoduje zgłoszenie wyjątku CancellationException w najbliższym punkcie wstrzymania, co bezpiecznie zatrzymuje korutynę.
val job = scope.launch { /* work */ }
job.cancel() // stops it cooperativelyKooperatywne anulowanie
Korutyny muszą współpracować: długie pętle obliczeniowe powinny sprawdzać isActive lub wywoływać funkcję suspend, aby anulowanie mogło zadziałać.
while (isActive) {
// do a chunk of work
}Wyjątki w korutynach
Nieobsłużony wyjątek w funkcji launch propaguje się do zakresu i anuluje jego korutyny siostrzane (chyba że używany jest SupervisorJob). Błędy należy obsługiwać za pomocą try/catch lub CoroutineExceptionHandler.
Dlaczego zakresy mają znaczenie w Androidzie
Android udostępnia gotowe zakresy powiązane z cyklem życia komponentów — takie jak viewModelScope i lifecycleScope — dzięki czemu korutyny są automatycznie anulowane we właściwym momencie. Temu poświęcona jest następna lekcja.
Szybkie sprawdzenie
Sprawdź swoją wiedzę na temat zakresów korutyn.
Powtórzenie
Uczestnik nauczył się:
- Funkcje
suspendwstrzymują działanie bez blokowania. launchuruchamia pracę bez oczekiwania na wynik, aasynczwraca wynik.- CoroutineScope ogranicza czas życia korutyn (strukturalna współbieżność).
- Anulowanie ma charakter kooperatywny.
Często zadawane pytania
Czy lekcja „Podstawy korutyn i zakresów” jest bezpłatna?
Tak — pełny tekst „Podstawy korutyn i zakresów” 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 „Podstawy korutyn i zakresów”?
Uruchamiaj korutyny we właściwym zakresie Ć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 1 z 4.
Ile czasu zajmuje lekcja „Podstawy korutyn i zakresów”?
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
- Podstawy korutyn i zakresów
- viewModelScope i Dispatchers
- Podstawy Kotlin Flow
- StateFlow i SharedFlow