Gdy użytkownik długo (muszę poszukać informacji ile czasu to jest długo dla androida) nie korzysta z danego zadania (task) system zamyka wszystkie aktywności (activity) w danym zadaniu poza pierwszą (root activity).
Żeby tak się nie działo należy w tej pierwszej aktywności wywołującej kolejne ustawić dla atrybutu alwaysRetainTaskState wartość true.
Żeby android nie czekał, tylko od razu po przejściu aplikacji z głównego wątku (foreground) do tła (background) zamknął wszystkie aktywności poza pierwszą należy w tej pierwszej aktywności wywołującej kolejne ustawić dla atrybutu clearTaskOnLaunch wartość true.
Żeby system po przejściu aplikacji do tła zamknął konkretną aktywność należy ustawić dla atrybutu finishOnTaskLaunch wartość true.
Pokazywanie postów oznaczonych etykietą Stos. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą Stos. Pokaż wszystkie posty
sobota, 7 kwietnia 2018
piątek, 30 marca 2018
Co to takiego jest to Affinity?
Koligacja (affinity) aktywności (activity) określa do jakiego zadania dana aktywność preferowanie należy.
Domyślnie jest taka sama dla wszystkich aktywności danej aplikacji i jej wartość określana jest przez nazwę paczki aplikacji. Dzięki temu wszystkie aktywności aplikacji są ze sobą powiązane i będą się otwierały w stosie (stack) tego samego zadania (task).
Koligację inną niż domyślna można ustawić zmieniając w manifeście wartość atrybutu taskAffinity dla wybranej aktywności. Wartość ta musi być inna niż nazwa paczki aplikacji (to jest domyślna wartość tego atrybutu).
Koligacja jest brana pod uwagę, gdy:
Domyślnie jest taka sama dla wszystkich aktywności danej aplikacji i jej wartość określana jest przez nazwę paczki aplikacji. Dzięki temu wszystkie aktywności aplikacji są ze sobą powiązane i będą się otwierały w stosie (stack) tego samego zadania (task).
Koligację inną niż domyślna można ustawić zmieniając w manifeście wartość atrybutu taskAffinity dla wybranej aktywności. Wartość ta musi być inna niż nazwa paczki aplikacji (to jest domyślna wartość tego atrybutu).
Koligacja jest brana pod uwagę, gdy:
- aktywność jest wywoływana z flagą FLAG_ACTIVITY_NEW_TASK - system sprawdza wtedy czy jest jakieś inne zadanie, którego aktywności mają tę samą koligację co wywoływana aktywność - jeśli tak, to aktywność jest do niego przypisywana, jeśli nie to wywoływana aktywność otwiera nowe zadanie
- atrybut allowTaskReparenting dla danej aktywności ma wartość true - wtedy każde zadanie, z którym dana aktywność ma koligację, przechodząc do gółwnego wątku (foreground) przypisuje sobie na górę stosu i wyświetla tę aktywność
środa, 21 marca 2018
Kilka słów o taskach
Zadanie (Task) to zbiór aktywności (Activity) ułożony w stos (stack) tak, żeby klikając przycisk "wstecz" można było cofnąć się do poprzedniej aktywności (back stack). Zbiór ten jest aktywny dla każdej uruchomionej aplikacji, dopóki nie zostanie zamknięty - ale na prawdę zamknięty. System przechowuje w tle (background) otwarte zadania dla wielu uruchomionych aplikacji, chyba, że użytkownik (lub coś innego) świadomie i celowo (lub wskutek błędu) zadanie zamknie.
Przy kliknięciu ikony aplikacji system przywraca z tła do głównego wątku (foreground) istniejące dla danej aplikacji zadanie lub tworzy nowe zadanie jeśli aplikacja nie ma otwartego zadania.
System utrzymuje w tle wiele zadań - tak wiele, jak jest w stanie. W pewnym momencie otwartych zadań robi się tak wiele, że system musi, dla poprawy pamięci, jakieś zadanie zamknąć. Warto o tym pamiętać pisząc aplikację - takie niespodziewane zamknięcie może spowodować w aplikacji błędy i utratę danych, jesli się przed tym nie zabezpieczymy.
System obsługuje każde z zadań oddzielnie, a w przypadku urządzeń, które mogą wyświetlać więcej niż 1 okno (multi-windowed environment, Chromebooks) zadania utrzymywane są oddzielnie
dla każdego okna.
Stos w aplikacji jest zbiorem aktywności działającym zgodnie z zasadą LIFO (Last In First Out).Przy uruchomieniu aplikacji na stos trafia główna aktywność (main activity). Kiedy aktualna aktywność wywołuje kolejną - kolejna trafia na stos nad tę aktywność, która ją wywołała.
Zawsze wyświetlana i działająca jest aktywność z góry stosu.
Przycisk cofnięcia powoduje zakończenie i zamknięcie aktualnej aktywności oraz pobranie i wyświetlenie kolejnej, która znajdowała się pod stosem pod nią.
Stos nie zmienia kolejności aktywności, które w nim są - aktywność może tylko być wprowadzona na wierzch stosu (push) lub usunięta z wierzchu stosu (pop).
Przycisk "wstecz" usuwa po kolei wszystkie aktywności ze stosu i gdy stos jest pusty, zadanie przestaje istnieć. Usunięcie ostatniej aktywności ze stosu przenosi użytkownika do głównego ekranu (home) lub do aplikacji, która to zadanie aktywowała.
Stos przechowuje każde wywłoanie aktywności - to znaczy, że jeśli aplikacja jest tak zbudowana, że dana aktywność jest wywoływana kilkukrotnie w trakcie działania aplikacji, to na stosie znajdą się wszystkie wywołania z ich aktualnym stanem.
Przy kliknięciu ikony aplikacji system przywraca z tła do głównego wątku (foreground) istniejące dla danej aplikacji zadanie lub tworzy nowe zadanie jeśli aplikacja nie ma otwartego zadania.
System utrzymuje w tle wiele zadań - tak wiele, jak jest w stanie. W pewnym momencie otwartych zadań robi się tak wiele, że system musi, dla poprawy pamięci, jakieś zadanie zamknąć. Warto o tym pamiętać pisząc aplikację - takie niespodziewane zamknięcie może spowodować w aplikacji błędy i utratę danych, jesli się przed tym nie zabezpieczymy.
System obsługuje każde z zadań oddzielnie, a w przypadku urządzeń, które mogą wyświetlać więcej niż 1 okno (multi-windowed environment, Chromebooks) zadania utrzymywane są oddzielnie
dla każdego okna.
Stos w aplikacji jest zbiorem aktywności działającym zgodnie z zasadą LIFO (Last In First Out).Przy uruchomieniu aplikacji na stos trafia główna aktywność (main activity). Kiedy aktualna aktywność wywołuje kolejną - kolejna trafia na stos nad tę aktywność, która ją wywołała.
Zawsze wyświetlana i działająca jest aktywność z góry stosu.
Przycisk cofnięcia powoduje zakończenie i zamknięcie aktualnej aktywności oraz pobranie i wyświetlenie kolejnej, która znajdowała się pod stosem pod nią.
Stos nie zmienia kolejności aktywności, które w nim są - aktywność może tylko być wprowadzona na wierzch stosu (push) lub usunięta z wierzchu stosu (pop).
Przycisk "wstecz" usuwa po kolei wszystkie aktywności ze stosu i gdy stos jest pusty, zadanie przestaje istnieć. Usunięcie ostatniej aktywności ze stosu przenosi użytkownika do głównego ekranu (home) lub do aplikacji, która to zadanie aktywowała.
Stos przechowuje każde wywłoanie aktywności - to znaczy, że jeśli aplikacja jest tak zbudowana, że dana aktywność jest wywoływana kilkukrotnie w trakcie działania aplikacji, to na stosie znajdą się wszystkie wywołania z ich aktualnym stanem.
Subskrybuj:
Posty (Atom)