package ru.ltst.u2020mvp.ui.misc;
import android.os.Looper;
import rx.Scheduler;
import rx.Subscription;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Action0;
import rx.subscriptions.Subscriptions;
public class AndroidSubscriptions {
private AndroidSubscriptions() {
throw new AssertionError("No instances");
}
/**
* Create a {@link Subscription} that always runs the specified {@code unsubscribe} on the
* UI thread.
*/
public static Subscription unsubscribeInUiThread(final Action0 unsubscribe) {
return Subscriptions.create(() -> {
if (Looper.getMainLooper() == Looper.myLooper()) {
unsubscribe.call();
} else {
final Scheduler.Worker inner = AndroidSchedulers.mainThread().createWorker();
inner.schedule(() -> {
unsubscribe.call();
inner.unsubscribe();
});
}
});
}
}