Подтвердить что ты не робот

Дизайн Android Architecture - как это сделать правильно?

Как выглядит хорошая архитектура для приложения для Android? Должна ли вся "рабочая/бизнес-логика" выполняться в фоновом режиме, а Activity связывается только с сервисом для запроса/получения данных откуда-то (локального/удаленного)?

Вы бы применили "сервис", который Activity вызывает как настоящий Android-сервис? Или POJO-Singleton, который выполняет работу (возможно, используя фоновые потоки). Или создайте потоки фона в своей деятельности для выполнения длительных действий (запросите веб-сервис).

Как вы правильно отбираете свои данные? Используете ли вы ContentProvider для доступа/абстрактных данных? Как/откуда следует запрашивать? Мероприятия? Обслуживание?..

Я попытался найти хороший дизайн архитектуры приложения, но я только нашел, как выглядит архитектура Android, а не как выглядит Android-приложение.

И что вы думаете об этом? Какие компоненты приложения для Android должны сообщать друг другу, чтобы обеспечить лучшую расширяемость/инкапсуляцию,...?

4b9b3361

Ответ 1

Нет ответа на этот вопрос. Хороший дизайн OO не зависит от Android. Я бы сказал, что это правило - если инфраструктура дает вам объект высокого уровня (например, Service в случае Android), который подходит вашему прецеденту, используйте его. Если вы обнаружите, что вы делаете POJO-реализации одних и тех же вещей, которые вы получаете бесплатно с помощью фреймворка, перейдите в рамки.

Что касается разделения проблем, это стандартный материал OO. Не помещайте что-либо в свои классы активности, это не задание Activity. Переполнение операции с помощью методов и свойств, которые требуется Управлению, но на самом деле не является действительностью Activity, - затрудняет понимание вашей деятельности.

Я обычно отделяю вещи от подпакетов в своих приложениях.

  • com.myname.myproject.app - базовые классы, глобальная функциональность приложения
  • com.myname.myproject.net - сетевые материалы, связанные с сетью утилиты.
  • com.myname.myproject.data - db помощники, поставщики и т.д.
  • com.myname.myproject.model - объектная модель

и др.

Что касается связи внутри вашего приложения...

У меня всегда есть собственный класс приложений, который я регистрирую в манифесте. Таким образом, когда у меня есть контроллеры и помощники, которые должны быть "единственным экземпляром", мне не нужно делать все эти сумасшедшие потокобезопасные одноэлементные файлы... Я просто сохраняю одну глобальную копию.

RoboGuice - это инфраструктура инъекций зависимостей, которая делает это еще проще для выполнения... определенно стоит посмотреть. Если это вас интересует, группа Google для RoboGuice отличная и постоянно заполнена создателями структуры, которые могут в принципе ответить на все, что вам нужно.

В связи с подключением к приложениям я использую один экземпляр класса Controller и State для хранения состояния и выполнения общих задач, и я обычно использую BroadcastIntents для связи с Activity from Services