Есть Messenger и Handler, в который принимаются сообщения.
private class IncomingHandler extends Handler {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
}
}
private IncomingHandler incomingHandler = new IncomingHandler();
private Messenger mMessenger = new Messenger(incomingHandler);
Через вызов
bindService устанавливается связь с сервисом (успешно). Отправляется сообщение сервису, в его
replyTo указывается
mMessenger. Сервис возвращает ответ и он приходит в
handleMessage. До сюда всё работает как и должно.
Отключаюсь от сервиса через
unbindService. Сервис присылает ещё одно сообщение и оно почему-то опять принимается Handler-ом. Отвязываю его от кэлбеков, уничтожаю его и Messenger.
mMessenger = null;
incomingHandler.removeCallbacksAndMessages(null);
incomingHandler = null;
Сервис отправляет очередное сообщение и оно опять принимается handleMessage в то время, когда incomingHandler, переданный Messenger-у и он сам в null. Я предполагал, что после отключения от сервиса, отправка из него сообщения вывалится в исключение. Как такое возможно и что надо сделать, чтобы сообщения перестали доходить?