Intro : у меня есть 3 вида деятельности, DashBoard
, Feed
и Events
. DashBoard запускается при запуске приложения. Оттуда пользователь может перейти в канал или события.
Проблема : Я хочу начать загрузку (в отдельном потоке, конечно), когда запустится DashBoard
. Оттуда пользователь может перейти к Feed
или Events
, и загрузка будет выполняться или уже завершена. Действия Feed
или Event
(которые когда-либо уместны в данном случае) должны быть уведомлены о том, что загрузка завершена и данные доступны. Каков наилучший способ сделать это?
Мой текущий код : у меня есть класс загрузчика DownloadHandler
, который инициируется действием DashBoard
. Этот класс скачивается в отдельной ветке. Класс отслеживает логическое значение с именем completed
. Для него создается значение false
, а после завершения загрузки оно изменяется на true
.
В настоящее время Мои классы Feed
или Events
будут опрашивать переменную completed
каждые 100 мс или около того в отдельном потоке, чтобы он не блокировал поток пользовательского интерфейса. и когда переменная completed
становится true
, она вызывает функцию в этом конкретном классе, которая затем запрашивает класс DataHandler
для загруженных данных.
Это работает, но я чувствую, что моя логика немного грязная, и должен быть лучший способ сделать это. Потому что я использую два отдельных потока, один для загрузки, один для опроса завершенной переменной. Есть ли лучший способ сделать это?
Я прочитал AsyncTask
и другие обратные вызовы, но проблема в том, что я не могу указать обратный вызов в определенном классе. Потому что, когда загрузка завершится, текущая активность может быть DashBoard
, Events
или Feeds
. Нет гарантии, какая активность будет впереди после завершения загрузки.