处理程序sendMessageDelayed仅在第一次运行
问题描述:
我遇到处理程序问题。它仅在第一次实例化时正常工作。处理程序sendMessageDelayed仅在第一次运行
的处理程序是一个视图中:
private long delayMillis;
private long mMoveDelay = 1000;
/**
* Create a simple handler that we can use to cause animation to happen. We
* set ourselves as a target and we can use the sleep()
* function to cause an update/invalidate to occur at a later date.
*/
private RefreshHandler mRedrawHandler;
class RefreshHandler extends Handler {
// serve per far vedere tile 2 almeno un tempo prestabilito checkTime
@Override
public void handleMessage(Message msg) {
delayMillis+=mMoveDelay;
System.out.println("--->handleMessage mMoveDelay"+10000);
System.out.println("--->handleMessage delayMillis"+delayMillis);
sleep();
}
public void sleep() {
//this.removeMessages(0);
sendMessageDelayed(obtainMessage(0), mMoveDelay);
System.out.println("--->sleep delayMillis"+delayMillis);
}
};
了几次后,我跑
mRedrawHandler = new RefreshHandler();
mRedrawHandler.sleep();
sendMessageDelayed瞬间调用。这个问题似乎在这个岗位相似:
Handler.sendMessageDelayed(msg, delay) not working correctly
你有什么想法? 谢谢
答
在sleep方法中,获取消息(0)的对象是什么? 这似乎是问题所在。您不能使用上次使用的消息对象。你必须创建新的消息对象。
我解决了只执行一次新的RefreshHandler()。 – Gyonder 2013-04-11 14:18:21