title: Why is posting & cancelled a runnable on a View and Handler result in different bahviour?
body: <p>I've been playing about with <code>Runnable</code>s and have discovered that if you <code>postDelayed</code> a <code>Runnable</code> on a <code>View</code> then removing the callback won't work, however if you do the same but post the <code>Runnable</code> on a <code>Handler</code> then removing the callback does work.</p>
  
  <p>Why does this work (<code>Runnable</code> run() code never gets executed):</p>
  
  <pre><code>Runnable runnable = new Runnable() {
      @Override
      public void run() {
          // execute some code
      }
  };
  
  Handler handler = new Handler();
  handler.postDelayed(runnable, 10000);
  handler.removeCallbacks(runnable);
  </code></pre>
  
  <p>where as this doesn't (<code>Runnable</code> run() code always gets executed)?:</p>
  
  <pre><code>Runnable runnable = new Runnable() {
      @Override
      public void run() {
          // execute some code
      }
  };
  
  View view = findViewById(R.id.some_view);
  view.postDelayed(runnable, 10000);
  view.removeCallbacks(runnable);
  </code></pre>