我收到两个错误
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.
因此,我在消息中使用消息。这是由功能引起的,根据“什么”参数,对象中的消息可能会被发送到不同的活动或缓存,直到所需的活动不可见。
内部消息是通过Message.obtain()
方法获得的,它从自己的消息池返回消息。
那么,我必须同时使用由obtain()
方法分配的消息,还是可以将其存储在参数中?
P.S。我无法稳定地重现这个错误,但是收到了很多用户的错误报告。
P.P.S如果我缓存消息,我创建原始消息的本地副本,因此另一个获取方法不能覆盖我的缓存消息。
答案 0 :(得分:0)
使用Message.obtain
重新获取邮件解决了问题。