Я пишу свое первое независимое приложение для Android. Он будет работать в фоновом режиме и реагировать на несколько событий, генерируемых ОС, где-то от нескольких раз в день до нескольких раз в неделю, в зависимости от пользователя.
Исходя из опыта программирования на ПК, я подумал, что мне может понадобиться сервис, но Разработчики Android> Сервис говорит:
Что такое услуга?
Наибольшее заблуждение относительно класса Service на самом деле связано с тем, что это , а не :
- Служба не отдельный процесс. Сам объект Service не подразумевает, что он работает в своем собственном процессе; если не указано иное, он выполняется в том же процессе, что и приложение, частью которого он является.
- Служба не нить. Это не средство само по себе выполнять работу из основного потока (во избежание ошибок приложения не отвечает).
Приложение не должно потреблять какие-либо ресурсы, если не произойдет одно из событий, которые оно прослушивает. Пользователю также не нужно активно использовать приложение после его настройки, только если он хочет изменить его настройки.
У меня есть игры, которые, кажется, делают что-то похожее на то, что я хочу. Они сидят в фоновом режиме и могут получать сообщения (например, теперь моя очередь), и когда я нажимаю на уведомление, он загружает игру в память, что занимает несколько секунд дольше, чем если бы оно уже было в памяти.
Если пользователь не использовал интерфейс приложения в течение месяца, я хочу, чтобы он все еще работал (даже если устройство было выключено) и отвечал на события, но не появлялся в списке недавних приложений. (при условии, что месяц достаточно длинный, чтобы оторваться от конца). В идеале я хочу, чтобы он реагировал на события в течение одной секунды; это не должно быть почти мгновенно. Как это обычно делается?
- Приложение (иногда используется) и отдельный "сервисный" процесс / поток (постоянный)
- Комбинированное приложение и «сервис» (постоянный)
- Комбинированное приложение и «сервис» (загружаются в память по событиям)