Skip to content

Instantly share code, notes, and snippets.

@joseprl89
Last active May 27, 2018 18:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joseprl89/fb064c2ca02ec738aa487511d3f07c4e to your computer and use it in GitHub Desktop.
Save joseprl89/fb064c2ca02ec738aa487511d3f07c4e to your computer and use it in GitHub Desktop.
How LifecycleBoundObserver and ObserverWrapper work for Internals of Android Architecture Components Part II- LiveData
class LifecycleBoundObserver extends ObserverWrapper implements GenericLifecycleObserver {
@NonNull final LifecycleOwner mOwner;
LifecycleBoundObserver(@NonNull LifecycleOwner owner, Observer<T> observer) {
super(observer);
mOwner = owner;
}
@Override
boolean shouldBeActive() {
return mOwner.getLifecycle().getCurrentState().isAtLeast(STARTED);
}
@Override
public void onStateChanged(LifecycleOwner source, Lifecycle.Event event) {
if (mOwner.getLifecycle().getCurrentState() == DESTROYED) {
removeObserver(mObserver);
return;
}
activeStateChanged(shouldBeActive());
}
@Override
boolean isAttachedTo(LifecycleOwner owner) {
return mOwner == owner;
}
@Override
void detachObserver() {
mOwner.getLifecycle().removeObserver(this);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment