@Test public void shouldRemoveMessageFromQueueBeforeDispatching() throws Exception { Handler h = new Handler(Looper.myLooper()) { @Override public void handleMessage(Message msg) { assertFalse(hasMessages(0)); } }; h.sendEmptyMessage(0); h.sendMessageAtFrontOfQueue(h.obtainMessage()); }
getH().sendMessageAtFrontOfQueue(Message.obtain(msg)); return false; getH().sendMessageAtFrontOfQueue(Message.obtain(msg)); return false;
@Test public void testSendMessageAtFrontOfQueueThenRunMainLooperOneMsgAtATime_shouldRunFrontOfQueueMsgFirst() throws Exception { Handler handler = new Handler(); ShadowLooper.pauseMainLooper(); // Post two messages to handler. Handle first message and confirm that msg posted // to front is removed. handler.obtainMessage(123).sendToTarget(); Message frontMsg = handler.obtainMessage(345); boolean result = handler.sendMessageAtFrontOfQueue(frontMsg); assertTrue(result); assertTrue(handler.hasMessages(123)); assertTrue(handler.hasMessages(345)); ShadowLooper.runMainLooperOneTask(); assertTrue(handler.hasMessages(123)); assertFalse(handler.hasMessages(345)); ShadowLooper.runMainLooperOneTask(); assertFalse(handler.hasMessages(123)); assertFalse(handler.hasMessages(345)); }
@Override public void run() { Log.d(TAG, "Tilt-Scroll loop starting"); while (isContinue) { try { TiltScrollInfo tiltScrollInfo = pageTiltScrollControl.getTiltScrollInfo(); if (tiltScrollInfo.scrollPixels!=0) { Message msg = new Message(); Bundle b = new Bundle(); b.putInt(SCROLL_PIXELS_KEY, tiltScrollInfo.scrollPixels); b.putBoolean(FORWARD_KEY, tiltScrollInfo.forward); msg.setData(b); mScrollMsgHandler.sendMessageAtFrontOfQueue(msg); } if (pageTiltScrollControl.isTiltScrollEnabled()) { long delay = mIsScrolling ? tiltScrollInfo.delayToNextScroll : TiltScrollInfo.TIME_TO_POLL_WHEN_NOT_SCROLLING; Thread.sleep(delay); } else { isContinue = false; } } catch (Exception e) { Log.v("Error", e.toString()); isContinue = false; } } Log.d(TAG, "Tilt-Scroll loop exiting"); } }
getH().sendMessageAtFrontOfQueue(Message.obtain(msg)); return false; getH().sendMessageAtFrontOfQueue(Message.obtain(msg)); return false;
getH().sendMessageAtFrontOfQueue(Message.obtain(msg)); return false; getH().sendMessageAtFrontOfQueue(Message.obtain(msg)); return false;