Я хочу службу, которая может работать в фоновом режиме до тех пор, пока я не остановлю, даже если компонент, который начал его, уничтожен, а также позволяет привязывать к действиям. Как это возможно ?Как можно работать на неопределенный срок, а также разрешать привязку к андроиду?
В соответствии с документом андроид связаны услуг - есть три способа создания Услуга ограничения
- Продление класса Binder.
- Использование Messenger.
- Использование AIDL.
Я создал связанный сервис, используя мессенджер (второй метод). Активность связывается с сервисом в его методе onStart() и отвязывается в методе onStop(). Двухсторонняя передача сообщений (между активностью и сервисом) работает правильно. Но проблема в том, что когда действие отвлекает сервис, служба уничтожается. Но я хочу службу, которая может работать бесконечно.
Возможно, как андроид Services Dev Guide - «Хотя эта документация в целом обсуждает эти два типа услуг отдельно, ваш сервис может работать в обоих направлениях - он может быть запущен (работать неограниченно), а также разрешать привязку. реализуете ли вы несколько методов обратного вызова: onStartCommand(), чтобы позволить компонентам запускать его и onBind(), чтобы разрешить привязку ».
Я также реализую метод onStartCommand() в сервисе и возвращаю START_STICKY, но он никогда не вызывается. Рассматривая обратные вызовы с ограниченным сроком службы в dev-руководстве, не существует метода обратного вызова onStartCommand(). Тогда как можно запустить сервис до тех пор, пока мы не остановимся и не разрешим привязку?
Я использую платформу eclipse в Fedora 15 ОС.
Любая помощь .....
«Я хочу, чтобы сервис, который может работать в фоновом режиме на неопределенный срок» - это невозможно. Пользователь убьет вашу услугу, если почувствует, что вы тратите впустую свои ресурсы устройств без постоянной доставки. ОС будет убивать вашу службу, если она чувствует, что она работает слишком долго. Я бы предположил, что менее 0,1% приложений для Android нуждаются в вечном сервисе. Убедите нас, что вашему приложению действительно нужен сервис, который работает все время. – CommonsWare
Я хочу службу, которая начинается, когда мое приложение запускается и может запускаться до тех пор, пока пользователь не выберет выход из меню опций в моем приложении, или пользователь или ОС не убьет его.Проблема заключается в том, что пользователь запускает мое приложение, поэтому моя служба запускается (я использую связанный сервис, потому что я хочу общаться с действиями и услугами с помощью мессенджера), но он уничтожается, когда пользователь нажимает обратно и выходит на главный экран, потому что моя деятельность отвязана его метод onStop(), и когда вся деятельность отключает мой сервис, я не хочу, потому что я слушаю SIP-сообщения, исходящие из фона и в соответствии с активностью обновления сообщения при его запуске. –
Почему вы хотите, чтобы он бежал бесконечно? Какую вещь вы хотите всегда выполнять? –