Там есть какие-то потенциальные проблемы и фундаметальные ошибки?
Идея годная. Единственное, что в onStateChangeDestroy нужно вызывать не onCompleted, а у подписчика вызвать unsubscribe. (onCompleted вызов у подписчика не отпишет его). И при уничтожении removeObserver тоже необязательно, он и так будет отписан