Retomar fluidos convertidos em dados ativos após a rotação da tela

Digamos que eu tenha uma atividade como esta:

public class TestActivity extends AppCompatActivity {
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        final TextView countdown = new TextView(this);
        setContentView(countdown);

        ViewModelProviders.of(this)
                .get(TestViewModel.class)
                .getCountdown()
                .observe(this, countdown::setText);
    }
}

E o modelo de exibição é:

class TestViewModel extends ViewModel {
    private final LiveData<String> countdown =
            LiveDataReactiveStreams.fromPublisher(
                    Flowable.concat(
                            Flowable.just("Falcon Heavy rocket will launch in..."),
                            Flowable.intervalRange(0, 10, 3, 1, TimeUnit.SECONDS)
                                    .map(x -> String.valueOf(10 - x)),
                            Flowable.timer(1, TimeUnit.SECONDS)
                                    .map(ignored -> "Lift off!")
                    )
            );

    LiveData<String> getCountdown() {
        return countdown;
    }
}

Eu quero lidar com a rotação corretamente, portanto, se o usuário girar seu dispositivo enquanto a contagem regressiva indicar 5, quero que o próximo valor após a rotação seja 5 (ou 4 se o segundo já tiver passado), apenas escolha onde a contagem regressiva deve realmente ser .

Se o foguete já decolou, quero que continue assim após a rotação, não quero que a contagem regressiva comece novamente.

No momento,LiveDataReactiveStreams cancela a assinatura em pausa e faz uma nova assinatura em retomar, para que a contagem regressiva seja reiniciada.

Eu estou supondo que eu deveria mudar algo na minha parte RxJava do código para que isso funcione. Alguma idéia do que mudar?

questionAnswers(1)

yourAnswerToTheQuestion