3

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

+2

Lol, изменения по этому вопросу полностью изменили его смысл. Ребята из GJ. – Jens

ответ

5

Это просто выполняется, например, путем передачи 0 в последнем параметре до #bindService(Intent, ServiceConnection, int).

E.g.

bindService(new Intent(this, MrMeService.class), new ServiceConnection(){ 
     public void onServiceDisconnected(ComponentName name) { 
      System.out.println("Service disconnected"); 
     } 
     public void onServiceConnected(ComponentName name, IBinder service) { 
      System.out.println("Service connected"); 
     } 
    }, 0); 

#bindService(..) вызов возвратит true, но услуга будет не на самом деле начать и подключение услуги не будет вызывать до кто-то на самом деле не запускает службу, например, используя #startService(Intent). По крайней мере, так оно работает на ICS и Gingerbread.

+0

не видел 0 в списке флагов, спасибо –

+0

Это отличный ответ, поскольку многие другие предлагают только сохранить логическое значение, возвращаемое методом bindService(), и это неверно. Это правильно. ПРИМЕЧАНИЕ. Функция unbindService() не вызывает onServiceDisconnected(), хотя она отключается от службы. Рекомендуется: onResume() -> bind(), onPause() -> unbind(), onEventToStart() -> start(), onEventToStop() -> stop(). Работа на всех устройствах, на которых я тестировал. – Armando

Смежные вопросы