Должен ли я связать свой сервис или вызвать startService несколько раз? - PullRequest
0 голосов
/ 01 июля 2019

Я отправляю данные между моей деятельностью и моим сервисом через намерение (я вызываю startForegroundService несколько раз, потому что этот вызов снова вызывается onStartCommand, а с помощью getIntent я получаю свои данные).

Пример:

Intent intent = new Intent(getActivity(), MediaPlayerService.class);
intent.putParcelableArrayListExtra("songList", Main.musicList);
intent.putExtra("songIndex", position);
intent.setAction(Constants.ACTIONS.ACTION_PLAY);
ContextCompat.startForegroundService(getActivity(), intent);

Я где-то читал, что лучше связываться с моим сервисом через привязку.

Но я достигаю того же с помощью этого метода, так какой из них предпочтительнее?

1 Ответ

0 голосов
/ 01 июля 2019

Из документов:

Запущено

Служба «запускается», когда компонент приложения (например, действие) запускает ее, вызывая startService ().После запуска служба может работать в фоновом режиме неограниченное время, даже если компонент, который ее запустил, уничтожен.Обычно запущенная служба выполняет одну операцию и не возвращает результат вызывающей стороне.Например, он может загрузить или загрузить файл по сети.Когда операция завершена, служба должна остановиться сама.

Bound

Служба «привязана», когда компонент приложения связывается с ней, вызывая bindService ().Связанная служба предлагает интерфейс клиент-сервер, который позволяет компонентам взаимодействовать со службой, отправлять запросы, получать результаты и даже делать это в процессах с межпроцессным взаимодействием (IPC).Связанный сервис работает только до тех пор, пока к нему привязан другой компонент приложения.Несколько компонентов могут связываться со службой одновременно, но когда все они отвязываются, служба уничтожается.

Подробнее об этом вы можете прочитать @: Службы Android , Связанные услуги

...