IllegalArgumentException: Сервис не зарегистрирован: - PullRequest
15 голосов
/ 18 июня 2010

У меня есть несколько действий в моем приложении, каждое действие вызывает bindservice и unbindservice для получения данных.В первом занятии bindservice и unbindservice работают нормально.Во втором упражнении (в котором используется тот же сервис) метод привязки работает нормально, но метод unbindservice дает исключение:

IllegalArgumentException: Service not registered:

Пожалуйста, помогите.

Ответы [ 4 ]

10 голосов
/ 07 июля 2013

Вопрос NikkyD очень хороший, и он помог найти причину этого исключения в моем случае.Для тех, кто сталкивается с такой же проблемой, убедитесь, что ваш вызов bindService и вызов unbindService выполняются в одном контекстеНадеюсь, это поможет.

5 голосов
/ 21 ноября 2012

Несколько клиентов могут подключиться к услуге одновременно.Однако система вызывает метод onBind () вашего сервиса для получения IBinder только тогда, когда первый клиент связывается.Затем система доставляет тот же IBinder всем дополнительным клиентам, которые связываются, без повторного вызова onBind ().http://developer.android.com/guide/components/bound-services.html Несколько компонентов могут связываться со службой одновременно, но когда все они связываются, служба уничтожается.Поэтому, пожалуйста, проверьте, если вы убили сервис в первый раз.Может быть, передать IBind каждому виду деятельности намного лучше. Потому что он просто возвращает только один.

0 голосов
/ 06 апреля 2019

Почему мы получаем эту ошибку?

Иногда мы получаем эту ошибку, когда в действии unbindService() вызывается раньше bindService()

enter image description here

Типичный пример

- это когда мы связываемService в onCreate() и unbindService в onPause() или onStop() Activity.

Как избежать?

Случай 1: Если вы хотите взаимодействовать со службой только тогда, когда видимость видна, тогда следуйте этому порядку.

bindService () в onStart() и unbindService () в onStop()

Случай 2: Когда вы хотите взаимодействовать с сервисом дажетогда активность находится в фоновом режиме, тогда

bindService () в onCreate() и unbindService () в onDestroy()

0 голосов
/ 05 сентября 2013

У меня была эта проблема со старым API.(Android 2.2) Я получил эту ошибку, когда вызвал этот метод: (из учебника по биллингу)

@Override
    public void onDestroy() {
       super.onDestroy();
       try {
           if (mHelper != null) mHelper.dispose();
           mHelper = null;
       }catch (IllegalArgumentException e){
           Log.d("TMA Billing Android 2.2","Error: "+e.getMessage());
           mHelper = null;
       }

    }

Как вы можете видеть, я окружил его Try Catch, и теперь он работает без проблем на Android2.2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...