title: RXJava Observable executing on main thread instead of background thread
body: <p>I created an Observable using the <code>Observable.fromCallable</code> method and subscribed to it as shown in the code snippet below.</p>
  
  <pre><code>Observable&lt;String&gt; stringObservable = Observable.fromCallable(new Callable&lt;String&gt;() {
          @Override
          public String call() throws Exception {
              Thread.sleep(1000);
              return Thread.currentThread().getName();
          }
  });
  
  stringObservable.subscribeOn(Schedulers.io());
  stringObservable.observeOn(AndroidSchedulers.mainThread())
          .subscribe(new Observer&lt;String&gt;() {
              @Override
              public void onSubscribe(Disposable d) {
  
              }
  
              @Override
              public void onNext(String aDouble) {
                  Toast.makeText(SimpleActivity.this, "onNext: " + aDouble, 
                  Toast.LENGTH_LONG).show();
              }
  
              @Override
              public void onError(Throwable e) {
                  new AlertDialog.Builder(SimpleActivity.this)
                          .setTitle("Error")
                          .setMessage(e.toString())
                          .show();
              }
  
              @Override
              public void onComplete() {
  
              }
          });
  </code></pre>
  
  <p>The snippet above produced a toast showing that the Callable was run on the main thread instead of the Schedulers.io thread. What's happening?</p>