Activity to jeden z podstawowych komponentów aplikacji na Androida i zazwyczaj reprezentuje pojedynczy ekran z interfejsem użytkownika, taki jak ekran logowania, lista wiadomości czy strona ustawień. Każda activity jest klasą dziedziczącą po Activity lub, najczęściej, po AppCompatActivity albo ComponentActivity i musi zostać zarejestrowana w pliku AndroidManifest.xml aplikacji. Gdy użytkownik otwiera aplikację z ekranu głównego, system uruchamia activity wskazaną jako punkt wejścia aplikacji, a stamtąd aplikacja może otwierać inne activities za pomocą intentów.
Activity ma cykl życia kontrolowany przez system Android. Za pomocą metod takich jak onCreate(), onStart(), onResume(), onPause(), onStop() i onDestroy() aplikacja jest powiadamiana, gdy ekran zostaje utworzony, staje się widoczny, traci fokus lub zostaje zamknięty, tak aby zasoby mogły zostać zwolnione, a dane zapisane we właściwym momencie. Wiele nowoczesnych aplikacji używa tylko jednej lub kilku activities i buduje poszczególne ekrany za pomocą fragmentów lub Jetpack Compose, ale activity pozostaje elementem, który łączy interfejs użytkownika aplikacji z systemem.
Activity w tworzeniu aplikacji oznacza pojedynczy ekran w aplikacji na Androida, który działa jak interaktywne okno dla użytkownika. Każda activity odpowiada za obsługę interakcji użytkownika i prezentowanie danych, co pozwala deweloperom tworzyć dynamiczne i angażujące doświadczenia użytkownika. Activities mogą współpracować, przekazując sobie nawzajem dane, co zapewnia płynną nawigację i działanie aplikacji.
More about Activity
Activity to centralny komponent w tworzeniu aplikacji na Androida, który reprezentuje pojedynczy ekran z interfejsem użytkownika. Każda activity jest samodzielną jednostką, która obsługuje interakcje użytkownika i prezentuje dane, co pozwala deweloperom tworzyć dynamiczne i angażujące doświadczenia użytkownika. Activities to podstawowe elementy składowe aplikacji na Androida i pełnią rolę punktów wejścia, przez które użytkownicy korzystają z funkcji aplikacji.
Od strony technicznej activity jest podklasą klasy Activity w Android SDK i działa poprzez obsługę metod cyklu życia, które kontrolują, jak activity jest tworzona, uruchamiana, zatrzymywana i niszczona. Po uruchomieniu activity przechodzi przez szereg etapów cyklu życia, które pozwalają deweloperom wydajnie zarządzać zasobami i reagować na interakcje użytkownika. Obejmują one metody takie jak onCreate(), onStart(), onResume(), onPause(), onStop() i onDestroy(), z których każda odgrywa rolę w zapewnieniu płynnego i responsywnego doświadczenia użytkownika.
Activities mogą być prezentowane na różne sposoby, z których każdy wspiera inne rodzaje interakcji:
Pełny ekran: W tym przypadku activity działa jako samodzielny ekran, który obsługuje interakcje użytkownika i prezentuje dane. Jest to najczęstsza forma, w której użytkownik przechodzi między różnymi ekranami aplikacji.
Jako okno dialogowe: Z motywem dialogowym activity jest prezentowana jako okno dialogowe unoszące się nad bieżącym ekranem. Czasami stosuje się to do wyświetlania ważnych komunikatów lub proszenia użytkownika o dane bez opuszczania bieżącego kontekstu, choć okna dialogowe częściej implementuje się za pomocą dialog fragments lub Compose.
Tryb immersyjny: Activity przejmuje pełną kontrolę nad ekranem i ukrywa paski systemowe, takie jak pasek stanu i pasek nawigacji, aby zapewnić immersyjne doświadczenie. Jest to idealne rozwiązanie w przypadku gier lub odtwarzania multimediów, gdzie skupienie na treści ma kluczowe znaczenie.
Jedną z największych zalet activities jest zdolność do obsługi złożonych interakcji użytkownika i wzorców nawigacji. Model activity w Androidzie obsługuje szereg wzorców nawigacji, takich jak back stack, który pozwala użytkownikom wracać do poprzednich ekranów, tworząc intuicyjne i przewidywalne doświadczenie użytkownika. Ponadto activities mogą współdzielić dane i komunikować się ze sobą za pomocą intentów, co umożliwia płynną integrację różnych części aplikacji.
Activities są też zaprojektowane tak, aby oszczędnie gospodarowały zasobami. Metody cyklu życia w Androidzie pozwalają deweloperom optymalizować zużycie zasobów poprzez zwalnianie zbędnych zasobów, gdy activity nie jest widoczna, i ponowne ich ładowanie, gdy wraca na pierwszy plan. Pomaga to zapewnić, że aplikacje pozostają responsywne i wydajne nawet na urządzeniach o ograniczonych zasobach.
W praktyce activities ukształtowały sposób projektowania i tworzenia aplikacji na Androida. Zapewniają uporządkowane podejście do obsługi interakcji użytkownika i wzorców nawigacji, co pozwala deweloperom tworzyć bogate i angażujące doświadczenia użytkownika. Activities stanowią rdzeń wielu popularnych aplikacji, w których służą do organizowania treści, obsługi danych wprowadzanych przez użytkownika i nawigacji między różnymi funkcjami.
Podsumowując, activities to niezbędna część tworzenia aplikacji na Androida, która łączy elastyczność, wydajność i łatwość użycia w rozwiązaniu pozwalającym deweloperom tworzyć potężne i intuicyjne aplikacje. Zdolność do obsługi złożonych cykli życia i wzorców nawigacji czyni je centralnym narzędziem we współczesnym tworzeniu aplikacji, w którym doświadczenie użytkownika i wydajne zarządzanie zasobami mają kluczowe znaczenie.
Frequently asked questions about Activity
Czym jest activity w Androidzie?
Activity to jeden z podstawowych elementów składowych aplikacji na Androida. Zazwyczaj reprezentuje pojedynczy ekran z interfejsem użytkownika, taki jak ekran logowania, lista wiadomości czy strona ustawień. Użytkownik korzysta z aplikacji za pośrednictwem jej activities.
Każda activity jest klasą dziedziczącą po Activity lub, częściej, po AppCompatActivity albo ComponentActivity i musi zostać zadeklarowana w pliku AndroidManifest.xml. Jedna activity jest oznaczona jako punkt wejścia, aby system wiedział, co otworzyć, gdy użytkownik dotknie ikony aplikacji. Nowoczesne aplikacje często mają niewiele activities i używają fragmentów lub Jetpack Compose do wyświetlania różnych ekranów.
Jak działa cykl życia activity?
Activity przechodzi przez szereg stanów od momentu utworzenia aż do zamknięcia. Android wywołuje określone metody, gdy stan się zmienia. onCreate jest wywoływana podczas tworzenia activity i to w niej konfiguruje się interfejs użytkownika. onStart i onResume są wywoływane, gdy activity staje się widoczna i gotowa do użycia.
Gdy użytkownik przełącza się na inną aplikację lub ekran, wywoływane są onPause i onStop, a gdy activity zostaje całkowicie zamknięta, wywoływana jest onDestroy. Umieszczając kod we właściwych metodach, aplikacja może na przykład zatrzymać wideo, gdy nie jest widoczne, i zapisać dane przed zamknięciem. Nieprawidłowa obsługa może powodować błędy i marnowanie zasobów.
Jak aplikacja przełącza się między activities?
Aplikacja przechodzi z jednej activity do drugiej za pomocą intentu. Intent opisuje, która activity ma zostać otwarta, i może zawierać dane, takie jak identyfikator produktu, który ma pokazać nowy ekran. Intent wysyła się za pomocą metody startActivity.
Nowa activity jest umieszczana na szczycie stosu nazywanego back stack. Gdy użytkownik naciśnie wstecz, górna activity zostaje zamknięta, a poprzednia jest wyświetlana ponownie. Jeśli nowy ekran musi zwrócić wynik, na przykład wybrany obraz, używa się Activity Result API. Wiele nowoczesnych aplikacji używa jednak jednej activity i komponentu Navigation do przełączania się między ekranami w jej obrębie.
Co dzieje się z activity, gdy ekran zostaje obrócony?
Gdy użytkownik obraca telefon, zmienia się konfiguracja, a Android domyślnie niszczy bieżącą activity i tworzy ją ponownie. Pozwala to załadować inny layout dopasowany do nowej orientacji, ale oznacza też, że dane przechowywane wyłącznie w activity mogą zostać utracone.
Aby tego uniknąć, zwykle używa się ViewModelu, który przetrwa zmiany konfiguracji i zachowuje dane, takie jak załadowane listy. Niewielkie ilości stanu, takie jak tekst w polu czy pozycja przewijania, można zapisać za pomocą onSaveInstanceState lub rememberSaveable w Jetpack Compose. To samo dotyczy zmiany języka, motywu lub rozmiaru ekranu.
Jaka jest różnica między activity a fragmentem?
Activity to samodzielny komponent znany systemowi i zadeklarowany w AndroidManifest.xml. Działa jako kontener na interfejs użytkownika aplikacji i może być uruchomiona bezpośrednio, na przykład z powiadomienia lub z innej aplikacji.
Fragment to mniejsza część interfejsu użytkownika wielokrotnego użytku, która zawsze żyje wewnątrz activity. W tej samej activity można wyświetlać kilka fragmentów, na przykład listę i widok szczegółów obok siebie na tablecie. Fragmenty mają własny cykl życia, który jest powiązany z activity, w której się znajdują. Wiele aplikacji używa niewielu activities i wielu fragmentów lub ekranów Compose.
Czym są launch modes dla activity?
Launch modes określają, jak nowa activity jest umieszczana względem istniejących, gdy zostaje uruchomiona. Domyślnie za każdym razem tworzona jest nowa instancja, nawet jeśli ta sama activity jest już otwarta.
W trybie singleTop activity jest używana ponownie, jeśli już znajduje się na szczycie stosu, zamiast tworzenia nowej. W trybie singleTask istnieje tylko jedna instancja, a activities nad nią są usuwane, gdy zostaje ponownie otwarta. singleInstance umieszcza activity we własnym tasku, a od Androida 12 singleInstancePerTask pozwala na jedną instancję na task. Launch modes określa się w AndroidManifest.xml lub za pomocą flag w intencie i stosuje się je na przykład po to, aby uniknąć duplikatów, gdy aplikacja jest otwierana z powiadomienia.
Activity for dummies
Activity w aplikacji jest jak pojedynczy ekran na telefonie komórkowym. Można ją sobie wyobrazić jako stronę w książce. Po otwarciu aplikacji pojawia się ekran, na którym można zrobić coś konkretnego, na przykład czytać wiadomości, wysłać wiadomość lub przeglądać zdjęcia. Każdy z tych ekranów to „activity”. Przejście od czytania wiadomości do wysyłania wiadomości oznacza przełączenie się z jednej activity na drugą. W ten sposób aplikacje organizują różne funkcje i informacje, tak aby łatwo było się po nich poruszać i z nich korzystać.