private Handler m_Timer = new Handler();private Runnable r = new Runnable() {
public void run() {
for(int i=0;i<m_Observer.size();++i)
{
m_Observer.get(i).TimerUpdate(0);
}
m_Timer.postDelayed(r, 1000);
}
}; public void Stop()
{
m_Timer.removeCallbacks(r);
}public void Start()
{
m_Timer.postDelayed(r, 1000);
}
执行完Stop()后仍会不停的走Runnable.run();这removeCallbacks到底起啥作用?请教
来看一下你的问题,其实是因为你在调用stop的时候,也就是在removeCallbacks的时候有当前runnable对象的run方法正在执行,所以不可能被remove掉,而run中最后又post了一次,其实也就是在remove后又有了新的runnable对象被加到MessageQueue中去了,也就会继续下面N次run方法的执行了~
即是说run方法正在执行时removeCallbacks无法立即生效吗?