5

runOnUIThreadメソッドを使用してRunnableタスクをメイン スレッド キューに渡しますが、新しいタスクを送信する前に、以前に送信したすべてのキュー タスクをクリアする必要があります。どうやってするの?

4

3 に答える 3

1

UI スレッドもLooperスレッドであり、1 つしかありません Message Queue

したがって、UI スレッドでハンドラーを作成してから を呼び出すhandler.post(runnable)と、実行可能なタスクがメッセージ キューに格納されます

を呼び出すrunOnUIThread()と、実行タスクも同じメッセージ キューに格納されます

5289    public final void runOnUiThread(Runnable action) {
5290        if (Thread.currentThread() != mUiThread) {
5291            mHandler.post(action); // runOnUiThread also calls handler.post()
5292        } else {
5293            action.run();
5294        }
5295    }

またmHandler.removeCallbacksAndMessages(null)、すべてのコールバックとメッセージを削除するのに役立ちます.

于 2016-01-13T09:58:18.897 に答える