java旋转屏幕_java-恢复可流动性,在屏幕旋转后转换为实时...

假设我有这样的活动:

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 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 getCountdown() {

return countdown;

}

}

我想正确处理旋转,因此,如果用户在倒数计时为5的同时旋转设备,我希望旋转后的下一个值为5(如果已经过去了第二个,则为4),只要在倒数计时应在的实际位置进行.

如果火箭已经升空,我希望它在旋转后保持这种状态,我不希望倒计时再次开始.

目前,LiveDataReactiveStreams会在暂停时取消订阅,并在恢复时进行新的订阅,因此倒计时将重新开始.

我猜想我应该在代码的RxJava部分中进行一些更改才能使其正常工作.有什么想法要改变吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值