Слушатель Android должен работать все время? - PullRequest
0 голосов
/ 03 апреля 2019

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

Исходя из опыта программирования на ПК, я подумал, что мне может понадобиться сервис, но Разработчики Android> Сервис говорит:

Что такое услуга?

Наибольшее заблуждение относительно класса Service на самом деле связано с тем, что это , а не :

  • Служба не отдельный процесс. Сам объект Service не подразумевает, что он работает в своем собственном процессе; если не указано иное, он выполняется в том же процессе, что и приложение, частью которого он является.
  • Служба не нить. Это не средство само по себе выполнять работу из основного потока (во избежание ошибок приложения не отвечает).

Приложение не должно потреблять какие-либо ресурсы, если не произойдет одно из событий, которые оно прослушивает. Пользователю также не нужно активно использовать приложение после его настройки, только если он хочет изменить его настройки.

У меня есть игры, которые, кажется, делают что-то похожее на то, что я хочу. Они сидят в фоновом режиме и могут получать сообщения (например, теперь моя очередь), и когда я нажимаю на уведомление, он загружает игру в память, что занимает несколько секунд дольше, чем если бы оно уже было в памяти.

Если пользователь не использовал интерфейс приложения в течение месяца, я хочу, чтобы он все еще работал (даже если устройство было выключено) и отвечал на события, но не появлялся в списке недавних приложений. (при условии, что месяц достаточно длинный, чтобы оторваться от конца). В идеале я хочу, чтобы он реагировал на события в течение одной секунды; это не должно быть почти мгновенно. Как это обычно делается?

  1. Приложение (иногда используется) и отдельный "сервисный" процесс / поток (постоянный)
  2. Комбинированное приложение и «сервис» (постоянный)
  3. Комбинированное приложение и «сервис» (загружаются в память по событиям)

1 Ответ

0 голосов
/ 03 апреля 2019

Недостаточно репутации, чтобы комментировать, но просто сказать, что ничто не мешает Android убить ваш сервис. Чтобы перезапустить ваш сервис после того, как пользователь перезагрузит свой телефон, вы можете добавить приемник и прослушать https://developer.android.com/guide/components/broadcasts

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

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