Android MVC шаблоны проектирования - PullRequest
0 голосов
/ 12 июня 2011

Я ищу несколько шаблонов проектирования для управления набором Activity с в приложении Android. В настоящее время я занимаюсь разработкой приложения, которое, как мне кажется, будет подвергаться множеству изменений в пользовательском интерфейсе до его «окончательного» выпуска (если он вообще будет). Я думал что-то вроде шаблона Observer, используя контроллер в Service, но я не могу найти хороших примеров. Единственное, на что я нахожу общие ссылки - это использование AIDL для привязки межпроцессного интерфейса, что неприменимо.

По сути, я хочу, чтобы Activity реализовал определенный Interface, такой как showLoginScreen(), loginError() и т. Д., Так что ЛЮБОЙ пользовательский интерфейс должен быть в состоянии реализовать (контроллер не привязан непосредственно к представлению). Только его интерфейс). Если это самый чистый способ для достижения этой цели, каков наилучший способ получения ручек для активных Activity s? Меня всегда смущало, что происходит, когда вы вызываете метод на Activity, который не активен.

Я думал что-то вроде Map в классе Application, выступающем в роли одиночки? put() / remove() из Map будет привязан к onStart() и onPause(). Это все еще не гарантирует, что Activity все еще жив, хотя ... ссылка может быть получена с get() на ключе, и тогда это может быть paused(), прежде чем Service сможет вызвать его. интерфейс.

Любые предложения или идеи будут оценены.

edit: я смотрел другие посты, такие как шаблон MVC на Android , однако они в основном не касаются реализации (и этот принятый ответ я просто категорически не согласен)

1 Ответ

1 голос
/ 12 июня 2011

Для использования наблюдателя / наблюдаемой схемы между вашими действиями и вашими услугами вам нужно будет использовать Связанные услуги .

Таким образом, вы можете получить указатель на IBinder, который может выступать в качестве вашей наблюдаемой, и вам не нужно беспокоиться о AIDL. Вы можете убедиться, что Служба была привязана к методу onServiceConnected() в вашем ServiceConnection. Имейте в виду, что ваш сервис будет работать только до тех пор, пока с ним будет связано действие, в противном случае он будет остановлен.

Я бы порекомендовал прочитать документацию android Bound Services , так как она очень хорошо объясняет использование.

...