Mam aplikację, która używa AsyncTasks do wywoływania serwera REST.Kiedy aplikacja przechodzi do tła podczas wykonywania zadania AsyncTask, co powinna zrobić?
Wyobraź sobie, że podczas okresu ładowania (to jest, AsyncTask przechodzi do serwera REST i pobiera dane do następnego ekranu), użytkownik naciska Home.
Co jest zalecane:
- Anuluj bieżące AsyncTask (S) i ponownego uruchomienia po wznowieniu Aktywny
lub
- kontynuować AsyncTasks ale unikając startActivity przez sprawdzenie, czy aplikacja jest w tle (aby uniknąć pierwszego planu nowej aktywności po wysłaniu aplikacji na tło). I onResume wysyłając do następnej aktywności
najgorszym przypadku scenariuszy, które powinny przewidujesz:
- Aplikacja przechodzi do tła i ginie z powodu braku pamięci
- asynctask nie ze względu na przekroczenie limitu czasu lub inny błąd REST
Po zarówno użytkownik wraca do aplikacji ...
zależy od Twoich wymagań.
Jeśli chcesz zapytać, jak zrobić jeden z dwóch wymienionych przez ciebie sposobów, to jest to inny przypadek.
Powiedz, czy tego właśnie potrzebujesz. – akkilis
Nie wiem, jak zaimplementować. Chcę wiedzieć, czy tak czy inaczej z tych dwóch jest bardziej zalecane i dlaczego. Jakie są problemy i zalety każdego z nich. – neteinstein
Jak już powiedziałem, zależy to od Twoich wymagań. 1. Zapewnia, że po wstrzymaniu działania nie podejmuje się żadnych działań i zapewnia, że niektóre typowe wyjątki zgłoszone w takich przypadkach zostaną odrzucone. 2. Będzie wymagać nieco więcej obsługi w kodzie i utrzymania zmiennej stanu i jest bardziej wyrafinowany pod względem doświadczenia. Ale masz problemy ze zgłaszaniem wyjątków/lub niestałości w przypadku, gdy Android usunął twoją aktywność ze stosu działań. W takim przypadku wątek zostanie załadowany ponownie, mimo że został wykonany wcześniej, ponieważ wcześniejsza instancja została usunięta przez system Android. – akkilis