@@ -0,0 +1,1623 @@
+package rx.concurrency;%0A%0Aimport android.os.Handler;%0Aimport rx.Scheduler;%0Aimport rx.Subscription;%0Aimport rx.operators.AtomicObservableSubscription;%0Aimport rx.util.functions.Func2;%0A%0Aimport java.util.concurrent.TimeUnit;%0A%0A/**%0A * Schedules actions to run on an Android Handler thread.%0A */%0Apublic class HandlerThreadScheduler extends Scheduler %7B%0A%0A    private final Handler handler;%0A%0A    public HandlerThreadScheduler(Handler handler) %7B%0A        this.handler = handler;%0A    %7D%0A%0A    @Override%0A    public %3CT%3E Subscription schedule(final T state, final Func2%3CScheduler, T, Subscription%3E action) %7B%0A        final AtomicObservableSubscription subscription = new AtomicObservableSubscription();%0A        final Scheduler _scheduler = this;%0A%0A        handler.post(new Runnable() %7B%0A            @Override%0A            public void run() %7B%0A                subscription.wrap(action.call(_scheduler, state));%0A            %7D%0A        %7D);%0A        return subscription;%0A    %7D%0A%0A    @Override%0A    public %3CT%3E Subscription schedule(final T state, final Func2%3CScheduler, T, Subscription%3E action, long delayTime, TimeUnit unit) %7B%0A        if (delayTime == 0) %7B%0A            return schedule(state, action);%0A        %7D else %7B%0A            final AtomicObservableSubscription subscription = new AtomicObservableSubscription();%0A            final Scheduler _scheduler = this;%0A            handler.postDelayed(new Runnable() %7B%0A                @Override%0A                public void run() %7B%0A                    subscription.wrap(action.call(_scheduler, state));%0A                %7D%0A            %7D, unit.toMillis(delayTime));%0A            return subscription;%0A        %7D%0A    %7D%0A%7D%0A%0A%0A

Add HandlerThreadScheduler which schedules actions on an Android Handler thread