Zauważyłem, że w mojej aplikacji użytkownik może uzyskać całkiem "zagnieżdżone" w różnych czynnościach, które są otwierane, gdy użytkownik korzysta z aplikacji.Czy istnieje sposób na jedną i tylko jedną instancję każdego działania?
Na przykład:
- Menu Główne
- Lista Object
- Object Szczegóły
- Object Edit
- Object Szczegóły
- Object Child Szczegóły
- Dziecko Object Edit
- Obiekt Szczegóły dziecka
Teraz, gdy użytkownik naciśnie ponownie, musi dwukrotnie przejść przez "Szczegóły potomka obiektu" (ten sam obiekt, gdy jest edytowany, powraca do strony szczegółowej), i to samo dzieje się dla "Szczegóły obiektu nadrzędnego".
Czy istnieje sposób ponownego wykorzystania działań, jeśli są już otwarte w stosie i przeniesienia ich na początek? Jedyny sposób, jaki widziałem, dotyczy działań z atrybutem launcher
. Wierzę, że widziałem singleTask
i singleTop
.
Jeśli mam używać tych dwóch atrybutów: singleTask
i singleTop
, jak mam ich użyć? Kiedy próbowałem włączyć je do aplikacji, nie robiło to żadnej różnicy. Czy muszę również ustawić flagę podczas uruchamiania intencji za pomocą startActivity
?
** Nie używaj tego bez zrozumienia wszystkich implikacji 'launchMode =" singleInstance "'. Ta czynność _nie_ jest faktycznie _na porządek_ **, ponieważ zmusza działanie całkowicie do oddzielnego zadania (tj. Pojawi się oddzielnie od aplikacji na liście Ostatnie aplikacje). Jeśli zrobisz to dla każdego działania w aplikacji, zobaczysz każdy z nich jako osobne wpisy na liście Ostatnie aplikacje. Przynajmniej tak mówią doktorzy. [Rzeczywistość jest trochę inna] (https://inthecheesefactory.com/blog/understand-android-activity-launchmode/en). –
Moje zalecenie jest użycie 'Intent.FLAG_ACTIVITY_REORDER_TO_FRONT' zamiast (jak sugeruje w odpowiedzi Vikram poniżej), chociaż nie jest to idealne rozwiązanie. –