gpt4 book ai didi

android - ViewModel 状态如何自动更新

转载 作者:行者123 更新时间:2023-11-30 00:12:52 26 4
gpt4 key购买 nike

在一个 Activity 中,我声明了一个计时器

Chronometer chronometer = findViewById(R.id.timer);

ChronometerViewModel viewModel = ViewModelProviders.of(this).get(ChronometerViewModel.class);
if (viewModel.getStartTime() == null) {
long startTime = SystemClock.elapsedRealtime();
viewModel.setStartTime(startTime);
chronometer.setBase(startTime);
} else {
chronometer.setBase(viewModel.getStartTime());
}
chronometer.start();

View 模型类

public class ChronometerViewModel extends ViewModel {
@Nullable
private Long mStartTime;

@Nullable
public Long getStartTime() {
return mStartTime;
}

public void setStartTime(final long startTime) {
this.mStartTime = startTime;
}
}

当我旋转屏幕时,chronometer 会自动从之前的状态恢复。但是我没有编写任何代码来在配置更改时将计时器的当前状态存储到 ViewModel 类。状态是如何自动恢复的?

我正在关注这个谷歌的代码实验室 tutorial

编辑:我对 Chronometer 的 setBase 方法感到困惑。我假设我的状态变量 mStartTime 会自动更新为 Chronometer 小部件中显示的当前时间。现在我已经检查了 setBase 方法的文档。由于 mStartTime 在配置更改时持续存在,我们可以使用 Chronometer 启动时的旧值。所以 Chronometer 实际上恢复了。

最佳答案

ViewModel 生命周期 如下所示,Android 出于同样的目的引入它,以便它可以在配置更改后继续存在并且在 Activity 完成 之前不会丢失状态。 p>

顺便说一句,您是否因为这种行为而面临任何问题?

ViewModel lifecycle

关于android - ViewModel 状态如何自动更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47872504/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com