У мене є Діяльність А і AsyncTask, який робить деякі обчисленняі зберігає дані в базі даних. Ці операції займають близько 3-5 секунд. AsyncTask викликається після натискання кнопки "Зберегти" і починається нова активність B (ця діяльність B не важлива). Є також Діяльність С, що завантажує дані, які я зберігав із діяльності Аі AsyncTask. І ось моя проблема - якщо я запускаю Activity C і AsyncTask ще не закінчив зберігати дані, я хочу показати анімацію завантаження, поки AsyncTask не закінчиться і дані не зможуть завантажуватися в активність.
У мене є бачення AsyncTask в методіonPostExecute змінить глобальну змінну "boolean ready = true", і після запуску Activity C я періодично перевіряю, чи відповідає змінна true. Але я думаю, що це не вірний шлях. Отже, який правильний шлях? Дякую
Відповіді:
0 для відповіді № 1Що ви можете зробити в Activity C, це перевірити базу даних onResume
чи очікуваний результат вже є чині. Якщо це там, просто покажіть свій результат. Якщо його немає, покажіть значок завантаження та зареєструйте приймач широкомовної програми, який слухає певну подію.
В onPostExecute
з AsyncTask
ви можете, ніж трансляцію конкретної події. Коли активність C отримує цю подію, вона може просто повторно перевірити базу даних, де зараз буде результат.