in android/autodispose-android/src/main/java/autodispose2/android/DetachEventCompletable.java [38:61]
public void subscribe(CompletableObserver observer) {
Listener listener = new Listener(view, observer);
observer.onSubscribe(listener);
// Check we're on the main thread.
if (!isMainThread()) {
observer.onError(new IllegalStateException("Views can only be bound to on the main thread!"));
return;
}
// Check that it's attached.
boolean isAttached =
(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && view.isAttachedToWindow())
|| view.getWindowToken() != null;
if (!isAttached) {
observer.onError(new OutsideScopeException("View is not attached!"));
return;
}
view.addOnAttachStateChangeListener(listener);
if (listener.isDisposed()) {
view.removeOnAttachStateChangeListener(listener);
}
}