Skip to content

Commit 0045930

Browse files
committed
Using a ScheduledAction in order to ensure correct subscription behaviour.
Signed-off-by: David Marques <[email protected]>
1 parent 641d4bc commit 0045930

File tree

1 file changed

+9
-17
lines changed

1 file changed

+9
-17
lines changed

rxjava-contrib/rxjava-android/src/main/java/rx/android/schedulers/HandlerThreadScheduler.java

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import rx.Subscription;
2222
import rx.functions.Action0;
2323
import rx.functions.Action1;
24+
import rx.internal.schedulers.ScheduledAction;
2425
import rx.subscriptions.BooleanSubscription;
2526
import rx.subscriptions.CompositeSubscription;
2627
import rx.subscriptions.Subscriptions;
@@ -70,27 +71,18 @@ public boolean isUnsubscribed() {
7071

7172
@Override
7273
public Subscription schedule(final Action0 action, long delayTime, TimeUnit unit) {
73-
final Runnable runnable = new Runnable() {
74-
@Override
75-
public void run() {
76-
if (isUnsubscribed()) {
77-
return;
78-
}
79-
action.call();
80-
}
81-
};
82-
handler.postDelayed(runnable, unit.toMillis(delayTime));
83-
84-
final Subscription subscription = Subscriptions.create(new Action0() {
74+
final ScheduledAction scheduledAction = new ScheduledAction(action);
75+
scheduledAction.addParent(mCompositeSubscription);
76+
scheduledAction.add(Subscriptions.create(new Action0() {
8577
@Override
8678
public void call() {
87-
handler.removeCallbacks(runnable);
88-
79+
handler.removeCallbacks(scheduledAction);
8980
}
90-
});
91-
mCompositeSubscription.add(subscription);
81+
}));
82+
83+
handler.postDelayed(scheduledAction, unit.toMillis(delayTime));
9284

93-
return Subscriptions.empty();
85+
return scheduledAction;
9486
}
9587

9688
@Override

0 commit comments

Comments
 (0)