当前位置: 代码迷 >> Android >> 发送同一个Message出现的异常
  详细解决方案

发送同一个Message出现的异常

热度:48   发布时间:2016-05-01 21:57:47.0
发送同一个Message出现的错误
按书上写了一个 根据模拟时钟设置数字时钟的代码
现在我想一秒钟更新一次,部分代码如下:


  mHandler = new Handler()
  {
  public void handleMessage(Message msg )
  {
  switch(msg.what)
  {
  case MainActivity.CLOCK_FLASH:
  mTextView.setText(mHour + ":" + mMin + ":" + mSec );
  break;
 
  default:
  break;
  }
 
  super.handleMessage(msg);
  }
 
  };



 class MyThread extends Thread
  {
  public void run()
  {
  super.run();
 
  try
  {
  Message msg = new Message();
  msg.what = MainActivity.CLOCK_FLASH;

  while(true)
  {
long time = System.currentTimeMillis();
Calendar mCalendar = Calendar.getInstance();
mHour = mCalendar.get(Calendar.HOUR);
mMin = mCalendar.get(Calendar.MINUTE);
mSec = mCalendar.get(Calendar.SECOND);

Thread.sleep(1000);

MainActivity.this.mHandler.sendMessage(msg);

  }
 
  }
  catch(Exception e)
  {
  e.printStackTrace();
  }
  }
  }

以上的代码运行会挂掉,错误信息是 This message is already in use
如果我将
Message msg = new Message();
msg.what = MainActivity.CLOCK_FLASH;
这两句代码放在while(true)内的话是没有问题,但是是否因为一直在new而导致内存被迅速“吃掉”(虽然我知道系统自己会回收的)

如果我想把以上的两句代码放在原处,那我应该加一些什么代码去确保执行正确呢?



------解决方案--------------------
如果不行,只能说message在handler发送出去的过程中某些状态被改变了,而发送前都会检查,所以不能再次发送。
------解决方案--------------------
你应该重复利用的话,点进源码看看改了什么,然后再用反射还原。。有点得不偿失的样子
  相关解决方案