在消息的对象字段中发送消息

时间:2014-04-18 09:29:03

标签: java android exception messages android-handler

我收到两个错误

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如果我缓存消息,我创建原始消息的本地副本,因此另一个获取方法不能覆盖我的缓存消息。

1 个答案:

答案 0 :(得分:0)

使用Message.obtain重新获取邮件解决了问题。