MessageQueue提供了另一类消息,IdleHandler
如果返回false,每次轮询都会调用(理论上应该可以做一些别的东西)
Looper.myQueue().addIdleHandler(new MyIdleOnce()); Looper.myQueue().addIdleHandler(new MyIdleKeep()); //removeIdleHandler class MyIdleKeep implements MessageQueue.IdleHandler{ /** *返回值为true,则保持此Idle一直在Handler中,否则,执行一次后就从Handler线程中remove掉。 */ @Override public boolean queueIdle() { Log.d(tag,空闲线程!); return true; } } class MyIdleOnce implements MessageQueue.IdleHandler{ @Override public boolean queueIdle() { Log.d(tag,出现一次); return false; } }