java.lang.IllegalStateException:{xxxxxx}This message is already in use. 字面意思就是message 已经被使用。原因就是同一个message对象多次重复发送。 解决方法也很简单: 重新new Message();或者调用handler.obtainMessage(); 都可以解决。 建议使用 handler.obtainMessage(); new Message 与 handler.obtainMessage()...
解决Handler发送消息时:this message is already in use 为了避免在主线程中进行耗时操作,我们经常使用handler来发送消息处理耗时操作。 有时候会出现程序崩溃然后控制台显示this message is already in use的报错信息 报错的信息是指:发送的message正在消息队列中,不能被使用。 其实就是当我们想多次发送消息时,不能使...
mHandler.sendMessageDelayed(msgCarcarstatus,1000*15);// mHandler.sendMessageDelayed(msg,1000*15); //IllegalStateException:This message is already in use. 上面代码所示,我们再从新new Message传过去就可以了; 如果感觉这样每次都new效果不过不好,还可以这样使用,Message message = YourHandler.obtainMessage()...
在利用handler发送消息时,遇到了一个问题如下: 07-01 10:32:15.233: ERROR/AndroidRuntime(9774): android.util.AndroidRuntimeException: { what=1006 when=-2ms arg1=1 obj=MotionEvent{40551f40 action=0 x=180.85541 y=390.24445 pressure=0.1137255 size=0.06666667} }This message is already in use. 老是...
This message is already in use. 这才去翻了翻源码,今天总结一下。 Android 消息机制主要涉及 4 个类: Message MessageQueue Handler Looper 我们依次结合源码分析一下。 Message “消息机制”,其中要传递的就是 Message,官方对它的描述是: 包含任意类型的对象和描述信息,可以被发送给 Handler。
*/booleanenqueueMessage(Message msg,long when){//入队消息没有绑定Handlerif(msg.target==null){thrownewIllegalArgumentException("Message must have a target.");}//入队消息已经在使用中if(msg.isInUse()){thrownewIllegalStateException(msg+" This message is already in use.");}//获取同步锁synchronize...
MessageQueue#enqueueMessage() 看方法名就知道这个方法主要工作是对Message排队处理: booleanenqueueMessage(Message msg,longwhen){ //... synchronized(this) { if(msg.isInUse()) { thrownewIllegalStateException(msg +" This message is already in use."); ...
消息辅助类,主要功能向消息池发送各种消息事件(Handler.sendMessage)和处理相应消息事件(Handler.handleMessage) 循环器(Looper) 不断循环执行(Looper.loop),从MessageQueue中读取消息,按分发机制将消息分发给目标处理者。 三、消息机制的架构 消息机制的运行流程:在子线程执行完耗时操作,当Handler发送消息时,将会调用Messa...
2.Handler,Message,MessageQueue,Looper的关系,一对多。相互是如何创建的? 3.Handler,Message,MessageQueue,Looper的作用,一个流程 4.消息如何存放的?消息如何消费的? 5.Handler:为什么能切换线程 Message:什么数据结构?对象池? MessageQueue:什么数据结构? Looper:如何保证唯一 ...
Message Message是消息实体。 MessageQueue MessageQueue是一个由单链表实现的优先级消息队列。 Handler Handler是消息处理类,可以发送消息、获取消息、处理消息、移除消息。 子类实现这个方法来处理从队列中取出的消息。 Looper 用来轮询消息队列。 1.3 Handler消息机制架构图 ...