Я должен назвать и unbindService и stopService для сервисов Android?

В моем приложении для Android я называю обоих startService и bindService:

Intent intent = new Intent(this, MyService.class);
ServiceConnection conn = new ServiceConnection() { ... }

startService(intent)
bindService(intent, conn, BIND_AUTO_CREATE);

Позже, я пытаюсь обоим unbindService andstopService':

unbindService(conn);
stopService(intent);

Однако я получаю исключение на вызове к unbindService. Если я удаляю этот вызов, приложение, кажется, работает правильно через stopService звонить.

Я делаю что-то не так? Я думал a bindService звоните должен был быть связан с unbindService звоните, и a startService звоните должен был быть связан с a stopService звонить. Это, кажется, не имеет место здесь, все же.

17
задан Matt Huggins 2 August 2010 в 06:40
поделиться

1 ответ

Как вы можете видеть здесь, это зависит от того, чего вы хотите достичь и как вы связываете сервис. Если вы хотите иметь длительную ссылку на сервис, то лучше использовать bindService, чем startService. Если в методе bindService используется флаг BIND_AUTO_CREATE, то вам не нужно вызывать startService, потому что служба запускается сама, когда это необходимо.

Если вы вызовете unBind service, то ваша ассоциация с сервисом будет удалена. Вам не обязательно явно останавливать службу, но вы можете это сделать. Но важно отметить, что если вы вызовете unBind(), то служба может быть остановлена в любое время.

5
ответ дан 30 November 2019 в 11:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: