我有一個作爲綁定服務的應用程序。我將消息發送到服務,但有時我收到以下錯誤:指定的消息隊列同步障礙令牌尚未發佈
E/AndroidRuntime(28216): java.lang.IllegalStateException: The specified message queue synchronization barrier token has not been posted or has already been removed.
有時候,我得到這個錯誤,而不是:
android.util.AndroidRuntimeException: { what=888 when=0 } This message is already in use.
有時UI只是凍結。我通過處理程序從服務交流到活動,反之亦然。
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());
}
}
這裏是一個consistenly導致上結冰,因此被稱爲第二時間的方法。
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();
}
}
}
我新的線程,使者和處理程序,所以任何幫助表示讚賞,感謝:)
你現在有解決方案嗎?如果你這樣做,請張貼它。萬分感謝。 – antonio081014 2013-11-26 22:49:29