Возникает вопрос, должен ли мой сервис быть в своем собственном процессе?
Нет.Под этим я подразумеваю, что он должен работать в том же процессе, что и все остальные ваши компоненты.
Я думаю, было бы неплохо, если бы другие люди могли написать свой собственный пользовательский интерфейс, виджеты и другие интересные вещи.Это не должно быть в отдельном процессе для этого права?
Нет.Это будет автоматически в отдельном процессе от кода от «других людей».
Сейчас служба продолжает работать между запусками задач / сетевыми отправками (хотя и не поддерживает wakelock), как я полагаюбудет более эффективным, чем открытие базы данных / выполнение настройки каждую минуту или около того.
Ваши пользователи могут не согласиться с этим планом.Постоянные сервисы являются причиной, по которой пользователи атакуют разработчиков с помощью программ-убийц и принудительных остановок из приложения «Настройки».
Следует ли разрешить гибель между ними или разрешить запуск без пробуждения?
Я рекомендую вам использовать IntentService
(так как в любом случае вам нужен фоновый поток для сетевого ввода-вывода) и позволить сервису закрываться между опросами.Кроме того, пожалуйста, позвольте пользователю контролировать значения X и Y из вашего вступительного абзаца.
Задачи выполняются с интервалом, должен ли мой сервис умереть между (необходимость повторно открыть БД)?
Как правило, да.Открытие базы данных занимает очень мало времени (например, несколько миллисекунд), если флэш-память не занята.Это небольшая цена, которую нужно заплатить, чтобы избежать жалоб пользователей на то, что ваша служба работает постоянно.
Могут ли люди использовать мою службу, если она не находится в отдельном процессе?
Да, если вы предоставляете какой-то API (AIDL, задокументированный набор Intents
для отправки в виде команд через startService()
и т. Д.).