在某些特定的情况下,我们可能需要暂停处理MessageQueue中的Message,然后恢复。可以通过一下方法来解决:
自定义Handler,复写handleMessage方法,在方法中添加标记位来控制暂停和开始:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
class extends Handler { Stack<Message> s = new Stack<Message>(); boolean is_paused = false; public synchronized void pause() { is_paused = true; } public synchronized void resume() { is_paused = false; while (!s.empty()) { sendMessageAtFrontOfQueue(s.pop()); } } public void handleMessage(Message msg) { if (is_paused) { s.push(Message.obtain(msg)); return; }else{ super.handleMessage(msg); } } }
|
近期评论