- standard
- za każdym razem tworzone jest nowe wywołanie (instance) danej aktywności w zadaniu (task)
- aktywność może być obecna w różnych zadaniach - będzie miała swoje oddzielne wywołania w każdym zadaniu, dla którego te wywołania były stworzone
- aktywność może mieć kilka wywołań w jednym zadaniu - tyle ile razy dana aktywność była wywoływana
- singleTop
- nowe wywołanie danej aktywności tworzone jest tylko wtedy, jeśli wywoływana aktywność nie jest aktualnie na górze stosu (top of the stack)
- gdy onNewIntent() powoduje wywołanie aktywności, która już jest na górze stosu, wtedy zamiast dodania na stos nowego wywołania, obecna aktywność jest aktualizowana o dane, które zawiera wywołanie
- aktywność może być obecna w różnych zadaniach - będzie miała swoje oddzielne wywołania w każdym zadaniu, dla którego te wywołania były stworzone
- aktywność może mieć kilka wywołań w jednym zadaniu - tyle ile razy dana aktywność była wywoływana przez inną aktywność (gdy nie była na górze stosu)
- singleTask
- nowe wywołanie danej aktywności tworzone jest tylko wtedy, gdy nie ma jeszcze żadnego wywołania tej aktywności w żadnym z zadań, wtedy też tworzone jest nowe zadnie a ta aktywność staje się jego początkową aktywnością
- gdy onNewIntent() powoduje wywołanie aktywności, która już jest w jakimś zadaniu, wtedy zamiast tworzenia nowego wywołania, obecna tam aktywność jest aktualizowana o dane, które zawiera wywołanie
- w systemie może być tylko jedno wywołanie danej aktywności
- przycisk wstecz przenosi użytkownika do poprzedniej aktywności (tej, która wywołała daną aktywność), pomimo iż zostało stworzone nowe zadanie
- singleInstance
- nowe wywołanie danej aktywności tworzone jest tylko wtedy, gdy nie ma jeszcze żadnego wywołania tej aktywności w żadnym z zadań, wtedy też tworzone jest nowe zadnie a ta aktywność staje się jego początkową aktywnością
- gdy onNewIntent() powoduje wywołanie aktywności, która już jest w jakimś zadaniu, wtedy zamiast tworzenia nowego wywołania, obecna tam aktywność jest aktualizowana o dane, które zawiera wywołanie
- w systemie może być tylko jedno wywołanie danej aktywności
- przycisk wstecz przenosi użytkownika do poprzedniej aktywności (tej, która wywołała daną aktywność), pomimo iż zostało stworzone nowe zadanie
- wywołanie nowej aktywności przez daną aktywność powoduje stworzenie nowego zadania - aktywność z atrybutem singleInstance jest jedyną aktywnością w zadaniu
Dzięki takiej deklaracji aktywność (o ile nie zostanie wywołana inaczej) będzie się zawsze zachowywać w wyznaczony sposób.
Jeżeli aktywność jednorazowo ma się zachować inaczej zamiast deklarować to w manifeście można wywołać ją poleceniem startActivity() z wybraną flagą:
- FLAG_ACTIVITY_NEW_TASK - zadziała analogicznie do atrybutu singleTask,
- FLAG_ACTIVITY_SINGLE_TOP - zadziała analogicznie do atrybutu singleTop,
- FLAG_ACTIVITY_CLEAR_TOP - jeżeli wywoływana aktywność ma już swoje wywołanie w aktywnym zadaniu, to wszystkie aktywności, które są na stosie ponad nią, zostają zamknięte a ona sama jest aktualizowana.
Poniżej podsumowanie w tabeli przy założeniu, że przedstawione atrybuty dotyczą aktywności A, a aktywność B ma atrybut standard.
aktywność A jest wywoływana przez aktywność B | |||||
aktywność A nie ma wywołania w systemie | aktywność A ma wywołanie w systemie | aktywność A jest wywoływana przez aktywność A | aktywność A wywołuje aktywność B | wstecz z aktywności A | |
standard | tworzy się nowe wywołanie danej aktywności na górze stosu | tworzy się nowe wywołanie danej aktywności na górze stosu | tworzy się nowe wywołanie danej aktywności na górze stosu | tworzy się nowe wywołanie danej aktywności na górze stosu | powrót do poprzedniej aktywności ze stosu |
singleTop | tworzy się nowe wywołanie danej aktywności na górze stosu | tworzy się nowe wywołanie danej aktywności na górze stosu | istniejące wywołanie jest aktualizowane | tworzy się nowe wywołanie danej aktywności na górze stosu | powrót do poprzedniej aktywności ze stosu |
singleTask | tworzy się nowe wywołanie danej aktywności w nowym zadaniu | istniejące wywołanie aktywności A jest aktualizowane i przechodzi do głównego wątku | istniejące wywołanie jest aktualizowane | tworzy się nowe wywołanie danej aktywności na górze stosu | powrót do poprzedniej aktywności z zadania, które wywołało aktywność A |
singleInstance | tworzy się nowe wywołanie danej aktywności w nowym zadaniu | istniejące wywołanie aktywności A jest aktualizowane i przechodzi do głównego wątku | istniejące wywołanie jest aktualizowane | tworzy się nowe wywołanie danej aktywności w nowym zadaniu | powrót do poprzedniej aktywności z zadania, które wywołało aktywność A |
Brak komentarzy:
Prześlij komentarz