读书人

发送同一个Message出现的异常

发布时间: 2012-04-04 16:38:51 作者: rapoo

发送同一个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发送出去的过程中某些状态被改变了,而发送前都会检查,所以不能再次发送。
[解决办法]
你应该重复利用的话,点进源码看看改了什么,然后再用反射还原。。有点得不偿失的样子

读书人网 >Android

热点推荐