Как постоянно запускать сервис / демон в Android TV Oreo? - PullRequest
0 голосов
/ 11 сентября 2018

Я хочу создать приложение для платформы Android TV. Частью этого приложения является служба / демон, которая должна запускаться при загрузке устройства и всегда должна работать при включенном телевизоре Android, даже в режиме ожидания.

Почему я хочу, чтобы этот сервис / демон работал постоянно? Частью моего проекта является приложение для портативных устройств (таких как смартфоны и / или планшеты), которое будет отправлять команды через TCP в приложение Android TV. Основываясь на типе TCP-сообщения, приложение выполнит действие (включение / выключение устройства, переместит мое приложение на передний план и т. Д.).

Я пробовал разные примеры кода, но Android TV Oreo через некоторое время просто убивает этот сервис. Я думаю, что эти примеры кода были сделаны до ограничений Android Oreo.

Приложение, подобное Kodi для Android TV, имеет веб-сервис, который всегда работает в фоновом режиме. Даже на Орео. но я не могу понять, как они это сделали. У кого-нибудь есть советы для меня?

Редактировать: Yatse Remote Starter делает то, что я хочу для Kodi, что я хочу делать с моим приложением. Он запускается при загрузке, работает даже в режиме ожидания. https://play.google.com/store/apps/details?id=tv.yatse.android.remotestarter&hl=en. Тем не менее, я хотел бы знать, как, поэтому я могу сделать это и сам. Заранее спасибо!

1 Ответ

0 голосов
/ 13 сентября 2018

Многие приложения и службы для Android работают одновременно. Чтобы снизить вероятность возникновения проблем, приводящих к ухудшению работы пользователей, приложения Android 8.0 имеют два способа ограничения возможностей приложения :

Фоновые ограничения службы : когда приложение не используется, существуют ограничения к его использованию фоновых услуг. Это не относится к переднему плану услуги , которые более заметны для пользователя .

Ограничения на вещание : за некоторыми исключениями приложения не могут использовать свои манифест для регистрации для неявных трансляций. Они все еще могут зарегистрироваться для этих передач во время выполнения, и они могут использовать манифест для зарегистрируйтесь для явных трансляций, предназначенных специально для их приложений.

Следовательно, вам нужно создать ForegroundService для продолжения обработки вашего приложения. Вы можете проверить это ТАК сообщение относительно этой проблемы.

...