Вот.

м, у меня есть такая деятельность:

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);
    }
}

И модель представления:

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;
    }
}

Я хочу правильно обрабатывать вращение, поэтому, если пользователь поворачивает свое устройство, пока обратный отсчет говорит 5, я хочу, чтобы следующее значение после поворота было 5 (или 4, если второе уже прошло), просто возьмите, где обратный отсчет должен быть на самом деле ,

Если ракета уже взлетела, я хочу, чтобы она продолжала вращаться, я не хочу, чтобы отсчет снова начался.

Сейчас,LiveDataReactiveStreams отменяет подписку при приостановке и создает новую подписку при возобновлении, поэтому отсчет времени начинается заново.

Я предполагаю, что я должен изменить что-то в моей части кода RxJava, чтобы это работало. Есть идеи, что изменить?

Ответы на вопрос(1)

Ваш ответ на вопрос