Czy dobrą praktyką jest przeładowywanie Activity
w Androidzie ?
Jaki byłby najlepszy sposób na to? this.finish
a następnie this.startActivity
z działalnością Intent
?
android
android-activity
hpique
źródło
źródło
Odpowiedzi:
Możesz po prostu użyć
odświeżyć
Activity
od wewnątrz.źródło
dla tych, którzy nie chcą widzieć tego mrugnięcia po odtworzeniu metody () , wystarczy użyć
źródło
To właśnie robię, aby przeładować aktywność po zmianie powrotu po zmianie preferencji.
Zasadniczo powoduje to przerysowanie działania.
Zaktualizowano: Lepszym sposobem na to jest wywołanie
recreate()
metody. Spowoduje to odtworzenie działania.źródło
Widziałem wcześniejsze odpowiedzi, które zostały udzielone za przeładowanie aktywności za pomocą Intent. Będą działać, ale możesz również zrobić to samo, używając metody restore () podanej w samej klasie Activity.
Zamiast pisać to
// Odśwież główną aktywność po zamknięciu okna dialogowego
Można to zrobić, pisząc tylko to
źródło
recreate()
było dla mnie rozwiązaniem - „ponowne uruchomienie” działania nie działało dla mnie, ponieważ rozpocząłem działanie przy użyciu „StartActivityForResult” i zepsuło to zachowanie.po prostu użyj
uruchomi to metodę onCreate w działaniu
źródło
Musiałem w pośpiechu zaktualizować listę wiadomości w jednej z moich aplikacji, więc po prostu odświeżyłem moją główną aktywność w interfejsie użytkownika, zanim zamknąłem okno dialogowe, w którym byłem. Jestem pewien, że są lepsze sposoby na osiągnięcie tego.
źródło
Android zawiera system zarządzania procesami, który obsługuje tworzenie i niszczenie działań, co w dużej mierze neguje wszelkie korzyści wynikające z ręcznego ponownego uruchomienia działania. Więcej informacji na ten temat można znaleźć w Podstawach aplikacji
Dobrą praktyką jest jednak upewnienie się, że metody onPause i onStop zwalniają wszelkie zasoby, których nie musisz się trzymać, i używają onLowMemory, aby ograniczyć potrzeby związane z aktywnością do absolutnego minimum.
źródło
Zacznij od takiego samego celu
activity
i zamknijactivity
.źródło
w niektórych przypadkach jest to najlepsza praktyka, w innych nie jest to dobry pomysł, jest zależny od kontekstu, jeśli zdecydujesz się to zrobić, korzystając z następujących sposobów, który jest najlepszym sposobem na przejście z aktywności do jej synów:
chodzi o to, że za każdym razem, gdy zakończysz () od activityIWishToRun, powrócisz do swojej żywej aktywności
źródło
Ponowne załadowanie całej aktywności może być trudnym zadaniem. Wystarczy wstawić część kodu, która musi zostać odświeżona ( kotlin ):
Jawa:
I w razie potrzeby wywoływaj „ onResume () ”.
źródło
Nie sądzę, żeby to był dobry pomysł ... lepiej byłoby zastosować czystszą metodę. Na przykład, jeśli twoja aktywność zawiera formularz, czystsza metoda może po prostu wyczyścić każdy widżet w formularzu i usunąć wszystkie dane tymczasowe. Chyba właśnie tego chcesz: przywrócić aktywność do stanu początkowego.
źródło
Po eksperymentowaniu z tym przez jakiś czas nie znalazłem żadnych nieoczekiwanych konsekwencji ponownego uruchomienia aktywności. Ponadto uważam, że jest to bardzo podobne do tego, co Android domyślnie robi, gdy zmienia się orientacja, więc nie widzę powodu, aby nie robić tego w podobnych okolicznościach.
źródło
mam ten sam problem
ten kod działa dla mnie. Interfejs API Androida 17
źródło
W działaniu możesz zadzwonić w
recreate()
celu „odtworzenia” działania (API 11+)źródło
Miałem inne podejście, takie jak: ustawienie
launchMode
mojej aktywności nasingleTop
i bez dzwonieniafinish()
, po prostustartActivity(getIntent())
wykonam zadanie. Trzeba tylko dbać o nowe dane zarówno w, jakonCreate()
i wonNewIntent
. Po drodze Susha aplikacja może mrugać, jak powiedział AMAN SINGH. Ale podejście AMAN SINGH nadal stworzy nową działalność, która jest w jakiś sposób niepotrzebna, nawet jeśli naprawił problem „mrugnięcia”, tak myślę.Za późno na to pytanie, ale jeśli ktoś szuka rozwiązania, oto jest.
źródło
Po zalogowaniu miałem ten sam problem, więc użyłem
źródło
użyłem tego i działa bez niego
finish()
źródło
dla mnie to działa, nie tworzy kolejnych Intencji, a same Intenty ładują nowe dane.
źródło