当然可以,可以开始,必然可以结束
Looper类提供两个API
public void quit() { mQueue.quit(false); }
public void quitSafely() { mQueue.quit(true); }
想探究他们两者的区别,应该进MessageQueue的源码中查看一下quit方法
void quit(boolean safe) { if (!mQuitAllowed) { throw new IllegalStateException("Main thread not allowed to quit."); } synchronized (this) { if (mQuitting) { return; } mQuitting = true; if (safe) { removeAllFutureMessagesLocked(); } else { removeAllMessagesLocked(); } // We can assume mPtr != 0 because mQuitting was previously false. nativeWake(mPtr); } }首先可以看到,主线程是不可以quit的。
下面,如果true,removeAllFutureMessagesLocked();如果false,removeAllMessagesLocked();
从方法名就可以看出来,前者是仅仅清空延时消息,不延时的消息,依旧让他执行完;后者是全部清空。