title: removeCallbacks() doesn't seems to delete the specified Runnable in Handler
body: <p>I developed an standalone app for a smartwatch, and I want to have an <code>OnTouchListner</code> which detect if a <code>Touch</code> lasted for at least 3 sec and perform action only in that case.</p>
  
  <p>Here is the code I use : (a simple boolean state which is set to <code>false</code> when <code>MotionEvent</code> is up and a <code>PostDelayed</code> action on the <code>Handler</code>)</p>
  
  <pre><code>private int longClickDuration = 3000;
  private boolean isLongPress = false;
  static Runnable longTouchRunnable;
  
  mContainerView.setOnTouchListener(new View.OnTouchListener() {
              @Override
              public boolean onTouch(View v, MotionEvent event) {
  
                  longTouchRunnable = new Runnable() {
                      @Override
                      public void run() {
                          if (isLongPress) {
                              Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
                              long[] vibrationPattern = {0, 500, 50, 300};
                              //-1 - don't repeat
                              final int indexInPatternToRepeat = -1;
                              vibrator.vibrate(vibrationPattern, indexInPatternToRepeat);
                              // set your code here
                              setStateStarting(); //Block the GUI, only one click and waiting for tablet
                              presenter.onStartClick();
                              Log.d("Long","LONG CLICK PERFORMED");
                              // Don't forgot to add &lt;uses-permission android:name="android.permission.VIBRATE" /&gt; to vibrate.
                          }
  
                      }
                  };
  
                  switch (currentState) {
                      case START: {
                          if (event.getAction() == MotionEvent.ACTION_DOWN) {
                              isLongPress = true;
                              Log.e("Long touch","Start");
                              myUIHandler.postDelayed(longTouchRunnable, longClickDuration);
                          } else if (event.getAction() == MotionEvent.ACTION_UP) {
                              isLongPress = false;
                              myUIHandler.removeCallbacks(longTouchRunnable);
                              Log.e("Long touch", "Stop");
                          }
                          return true;
                      }
                  }
                  return false;
              }
  
  
          });
  </code></pre>
  
  <p>My problem : 
  Everything work perfectly expect that the <code>Runnable</code> doesn't seem to be delete when it's necessary.
  --> If I click quickly two times on the view and then a third time and holding it (So the boolean state is <code>true</code> for the three <code>PostDelayed</code> which came after 3 sec) I will have my specific action code executed 3 times --> the <code>Runnable</code> task wasn't removed with the <code>ACTION_UP</code> event.</p>
  
  <p>Info : The message debug are prompt as expected...</p>
  
  <p>How can I properly destroy a <code>Runnable</code> that was postdelayed in a <code>handler</code> ?</p>
  
  <p>Thanks</p>