Накладные расходы на службы в Android (сколько я должен создать) - PullRequest
3 голосов
/ 10 ноября 2011

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

У меня есть две базы данных SQLite, одна из которых хранит фактические данные(в основном только для чтения товаров), другие параметры хранения, списки выбранных элементов и т. д.

Теперь я создал службу для управления этими базами данных по двум основным причинам:

  • Я хочу иметь возможность "сохранять при закрытии" (настройки), что возможно с помощью onDestroy
  • Загрузка данных занимает некоторое время, поэтому быстрое закрытие приложения сохраняет данные впамять

С точки зрения дизайна я мог бы:

  • Создать один сервис, обрабатывающий обе БД
  • Создать два сервиса, каждый обрабатывая одну БД

Чувствуется чище создавать отдельный сервис для каждой БД, например, расширять базовый базовый класс для обеспечения завершения работы, таймеров и т. Д. Это также позволяет мне настраивать их независимо (что НЕ требуется прямо сейчас).

С другой стороны, я не хочу начинать идти по этому пути, а затем, когда я привык делать подобные вещи в «услугах», обнаруживая, что естьограничение в 3 или 5 сервисов.

Итак, каковы накладные расходы, например, на 5 запущенных сервисов по сравнению с одним сервисом, имеющим 5 различных функций?Есть идеи?

Ответы [ 3 ]

1 голос
/ 10 ноября 2011

Количество сервисов, эффективно поддерживаемых Android, не должно вызывать беспокойства в вашей ситуации.Увидев списки запущенных сервисов в некоторых менеджерах задач, я склонен сказать, что до ~ 100 «запущенных» сервисов не должно быть проблемой на большинстве устройств.

Однако я не уверен, что выпопытка сделать на самом деле должна быть реализована в службе.Можете ли вы объяснить, почему вы считаете, что вам нужен сервис?

Я хочу иметь возможность "сохранить при закрытии" (настройки), что возможно с помощью onDestroy

Разве вы не можете сделать это в своих обычных обратных вызовах жизненного цикла Activity?

Загрузка данных занимает некоторое время, поэтому быстрое закрытие приложения сохраняет данные в памяти

Что вы подразумеваете под «быстрым закрытием»?Вы пытаетесь создать что-то вроде кеша для данных БД?

1 голос
/ 20 ноября 2015

Из документации по Android ...

Экономно пользуйтесь услугами

http://developer.android.com/training/articles/memory.html#Services

0 голосов
/ 10 ноября 2011

Если сервисы являются RemoteServices, то они запускаются в отдельном процессе, который добавляет накладные расходы и требует много памяти.

Попробуйте использовать один сервис для обоих сценариев.

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