O token de barreira de sincronização de fila de mensagens especificado não foi lançado

Eu tenho um aplicativo que como um serviço encadernado. Estou enviando mensagens para o serviço, mas às vezes estou recebendo o seguinte erro:

E / AndroidRuntime (28216): java.lang.IllegalStateException: O token de barreira de sincronização de fila de mensagens especificado não foi postado ou já foi removido.

Às vezes, recebo este erro:

android.util.AndroidRuntimeException: {what = 888 when = 0} Esta mensagem já está em uso.

Às vezes, a interface do usuário apenas congela. Estou me comunicando do serviço para a atividade e vice-versa através de manipuladores.

 public void init(IBinder service){
    playerService = new Messenger(service);
    setBound(true);
    try {
        Message msg = Message.obtain(null, PlayerService.MSG_REGISTER_CLIENT);
        msg.replyTo = messenger;
        playerService.send(msg);
        while(!messageQueue.isEmpty()){
            playerService.send(messageQueue.remove());
        }
    } catch (RemoteException e) {
        // In this case the service has crashed before we could even do anything with it
        Log.d(Player.TAG, "problem binding player messenger " + e.getMessage());
    }
}

Aqui está um método que consistenly resulta em congelamentos, a segunda vez que é chamado.

public void play(String url) {
    Message msg = Message.obtain(null, PlayerService.PLAY, 0, 0);
    msg.setData(getURLBundle(url));
    sendMessage(msg);
}

private void sendMessage(Message message){
    if(!isBound){
        Log.d(Player.TAG, "isnt bound, queueing message");
        messageQueue.add(message);
    }else {
        try {
            playerService.send(message);
        } catch (RemoteException e) {
            e.printStackTrace();
        }
    }
}

Eu sou novo em Threading, Messengers e Handlers, então qualquer ajuda é apreciada, obrigado :)

questionAnswers(1)

yourAnswerToTheQuestion