Как правильно получить MVC на Android? - PullRequest
0 голосов
/ 23 сентября 2010

Я новичок в программах, которые имеют архитектуру MVC, и я хочу сразу получить правильную идею ...

У меня есть это (Android) приложение, где поток (отдельно отПользовательский интерфейс) вычисляет некоторые данные.когда закончено, результаты пишутся члену объекта.Теперь: как мне заставить поток пользовательского интерфейса «осознать», что произошло обновление (т. е. что поток пользовательского интерфейса должен повторить вывод на экран).

самый очевидный способ - запустить бесконечный циклв потоке пользовательского интерфейса, который проверяет в каждом цикле, было ли обновление, - довольно неубедительно.так как мне сделать это "правильно"?

  • если я использую обработчик, который вызывается потоком вычислений каждый раз, когда доступны новые данные.этот обработчик затем запускает функцию, которая перерисовывает пользовательский интерфейс.

  • , если я использую wait () и notify (), чтобы поток пользовательского интерфейса узнал о факте появления новых данныхдоступно?

Я немного растерялся здесь.хотя я знаю основы этих концепций, я не знаю, какой из них является «лучшим» для использования здесь ...

РЕДАКТИРОВАТЬ: уточнить:

У меня есть класс А (которыйявляется операцией Android) и класс B, экземпляр которого создается A. Этот класс B имеет переменную-член X и запускает поток, который вычисляет значение X. По завершении потока он отправляет сообщение (с вычисленным значением)обработчику B. этот обработчик затем устанавливает значение X. теперь: так как B не хранит ссылку на A, как я "уведомляю" A, что произошло изменение значения X?отправить другой объект сообщения, который «перехватывается» обработчиком в классе A?

Ответы [ 3 ]

2 голосов
/ 23 сентября 2010

Вам известно о AsyncTask ?Это решит все эти сложные проблемы для вас.

1 голос
/ 24 сентября 2010

... ваш вопрос, кажется, больше касается управления потоками и его дизайна, чем о mvc.

Тогда вы не должны использовать поток классов или интерфейс, который можно запустить, а только AsyncTask. Это значительно упрощает обновление пользовательского интерфейса и разработку бизнес-логики. Цель AsyncTask - позаботиться об управлении потоками для вас.

Загляните в блог разработчиков Android. Безболезненная резьба

1 голос
/ 23 сентября 2010

Используйте обработчик и позвольте фоновому потоку уведомить поток пользовательского интерфейса, если доступно обновление.

Не блокируйте UI-поток с помощью цикла или ожидания. Это сделает ваш пользовательский интерфейс не отвечающим и убьет ваше приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...