Я новичок в разработке Android, поэтому мне хотелось знать, что погода имеет модель, реализующая наблюдаемый - хорошая практика или произойдет this.Can/Should Класс модели в Android расширяет Observable
В моем случае моя модель не является моделью базы данных, а состоянием сервера. У меня есть следующие классы
- MainActivity - Основной материал
- FragmentInfo - фрагмент Вид, который имеет текстовое поле
- ModelServerStatus - простой класс, который содержит логическую переменную и несколько полезную функцию для установки/получения переменных.
- ThreadCheckServerStatus - поток, который подключается к серверу через UDP и выполняет запись/чтение. Этот поток знает о
ModelServerStatus
и обновитModelServerStatus
с помощью setStatus. Этот поток всегда работает и спит в течение 5 секунд.
Должен ли я продлить Observable
на ModelServerStatus
и вызвать извещать каждый раз, когда ModelServerStatus.setStatus(true/false)
запускается. Таким образом, MainActivity
может быть Observer
и обновить FragmentInfo.textView
.
Очень простой ModelServerStatus.setStatus()
реализация
public void setStatus(boolean newStatus)
{
// See if the value of the server has changed
if (hasStatusChanged(newStatus))
{
//Observer Notify
setChanged();
notifyObserver();
}
}
Мои мысли за этим:
Модель будет уведомлять контроллер для обновления вида
или
ModelServerStatus уведомит MainActivity обновить FragmentInfo
Я также думаю о
Контроллер будет проверять модель для обновления и обновить View, если это необходимо.
Но это звучит неправильно.
Вопрос в том, какова была бы лучшая реализация этой задачи!
Мысли? спасибо за помощь
Удивительно, что это можно сделать в службе +1, но я не уверен, насколько это лучше или хуже, чем моя модель. Также я хочу только, чтобы он опросил только, когда приложение запущено, а не когда оно приостановлено, –
Вы всегда можете остановить службу при паузе. И начните его с резюме. Ваша модель будет в порядке, я уверен. Но общепринятый метод решения долгосрочных сетевых событий - это сервис. В этом случае широко используется метод широковещания, хотя вы можете так же легко создать систему прямой связи. – Knossos