2014-11-27 5 views
2

В приложении у меня есть Activity, Service (делать некоторые вещи, независимо от того, или не видна активность) и Модели класса (в MVC смысла), это синглтон. Деятельность и услуга играют роль Контроллеры, Вид определяется в макете xml (ничего не используется, существующие классы повторно используются). Оба Контроллеры используют одинаковые Модель. Служба не является удаленной, то есть живет в одном процессе.связь между деятельностью и службой через глобальные структуры данных?

Есть целый ряд методов (например, here, here, here) рекомендуется для связи между Activity и Service, структуры общих данных не являются среди них (Google says можно, но это в разделе, который не даже упоминать трансляции, мессенджеры, привязки и другие специфические для службы вещи). Ну, я понимаю проблемы с несколькими потоками, но если мне небезразличен доступ из нескольких потоков, Почему на Земле мне нужны другие методы?

(UPD: Я проверил, на самом деле, услуги и деятельность даже использовать ту же тему:. «Главный», ID = 1)

Вопрос: Является ли использование общих структур данных для общения между видами деятельности и услугами, которые считаются плохим стилем? Если да, то почему?

До сих пор я склонен думать, что этот метод является допустимым.

+0

, если оба вида деятельности и службы находятся в том же процессе, что и связанный шаблон локальной службы, читайте здесь здесь http://developer.android.com/guide /components/bound-services.html then^F local – pskink

ответ

0

Singleton класс выполняет эту работу для меня. Я использую SingletonActivity в своих проектах и ​​никогда не сталкивался с какой-либо блокировкой или другими проблемами, связанными с потоком.

Простота и прозрачность такого подхода важнее, чем «плохой стиль» или так далее, и он не вводит никаких накладных расходов IPC, как это делают «стандартные способы». Ваш код остается таким же чистым, как вы его хотите, а не как Google>)

+0

'SingletonActivity'? Что это, что он делает? – 18446744073709551615

+0

простое расширение класса 'Application', которое содержит все необходимые« свойства сеанса »и используется вместо« приложения »в файле манифеста – injecteer

Смежные вопросы