Android, unbind service и проблема onServiceDisconnected

Я плохо разбираюсь в английском, но я бы постарался хорошо объяснить мою проблему.

Итак, проблема в том, что:
1) У меня есть местная служба
2) Я начинаю, а затем привязываюсь к нему. 3) Проблема возникает, когда я собираюсь закрыть эту службу. onServiceDisconnected из моей реализации класса ServiceConnection никогда не вызывается. Если я закрою его вручную (из настроек) или unbindService, либо stopService, либо путем комбинации unbindService и stopService - onServiceDisconnected, все равно не будет вызываться. Что я делаю неправильно?

Ниже приведен короткий код:

protected ServiceConnection mServerConn = new ServiceConnection() {
    @Override
    public void onServiceConnected(ComponentName name, IBinder binder) {
        Log.d(LOG_TAG, "onServiceConnected");
    }

    @Override
    public void onServiceDisconnected(ComponentName name) {
        Log.d(LOG_TAG, "onServiceDisconnected");
    }
}

public void start() {
    // mContext is defined upper in code, I think it is not necessary to explain what is it 
    mContext.bindService(i, mServerConn, Context.BIND_AUTO_CREATE);
    mContext.startService(i);
}

public void stop() {
    mContext.stopService(new Intent(mContext, ServiceRemote.class));
    mContext.unbindService(mServerConn);
}

Я тестирую этот код под эмулятором Android 2.2

Ответы

Ответ 1

onServiceDisconnected вызывается только в экстремальных ситуациях (разбивается/убивается).

что очень маловероятно для локальной службы, поскольку все ваши компоненты приложения обычно работают в одном и том же процессе... что означает, что если вы не намерены развязать или уничтожить службу, она должна оставаться подключенной или умереть с использованием компонента.

Ответ 2

Я использовал Context.BIND_AUTO_CREATE в bindService. Я получаю такую ​​же проблему после того, как применил ее работу для меня.

bindService(new Intent(this,XMPPService.class),mConnection, Context.BIND_AUTO_CREATE);