2014-04-18 6 views
2

의 객체 필드에 메시지를 보내 그 문제는 한 객체 할당 될 수 있으며 두 방법을 보내, 두 가지 오류 메시지

android.util.AndroidRuntimeException: { what=53 when=0 arg1=325 } This message is already in use.

java.lang.IllegalStateException: The specified message queue synchronization barrier token has not been posted or has already been removed.

일부 검색이 나에게 대답을 줄

을 얻고있다. 하지만 여러 번 보내는 것은 아닙니다.

나는 그 문제가 다음과 같을 것이라고 추정한다. 네트워크 서비스 및 GUI와의 상호 연결을 위해 메시지를 사용합니다. 그리고 메시지 구조는 다음과 같습니다. int what, int arg, Object Message. 그래서 메시지에 메시지를 사용합니다. 이것은 'what'인수에 따라 객체의 메시지가 다른 액티비티로 전송되거나 필요한 액티비티가 표시 될 때까지 캐시 될 수있는 기능에 의해 발생합니다. 내부 메시지는 Message.obtain() 메서드에서 가져 오며,이 메서드는 자체 메시지 풀에서 메시지를 반환합니다.

따라서 obtain() 메서드로 할당되었거나 인수에 저장할 수있는 메시지를 동시에 사용해야합니까?

P. 이 버그를 안정적으로 재현 할 수는 없지만 사용자로부터 많은 버그 보고서를받습니다.

P.P.S 메시지를 캐시하면 원본 메시지의 로컬 복사본을 만들어 다른 획득 방법으로 캐시 된 메시지를 무시할 수 없습니다.

+0

이 문제가 해결 되었습니까? – wkhatch

+1

가능한 모든 장소에'Message.obtain'을 추가했습니다. 그리고 문제는 사라졌습니다. –

답변

0

Message.obtain을 사용하여 메시지를 가져옴으로써 문제가 해결되었습니다.