に更新されますどのように、私は、画面を回転すると、クロノメーターは、自動的に以前の状態から再開はViewModelに状態が自動的にアクティビティで
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 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();
のViewModelクラスを宣言しました。しかし、構成変更の際にViewModelクラスにタイマーの現在の状態を格納するコードは書きませんでした。状態は自動的にどのように復元されますか?
私はtutorial
編集このGoogleのcodelabs以下午前:私はクロノメーターのsetBase方法で混乱していました。私は自分の状態変数mStartTimeが自動的にクロノメーターウィジェットに表示されていた現在の時刻に更新されていると仮定しました。今私はsetBaseメソッドのドキュメントをチェックしました。 mStartTimeはconfirgurationの変更が続くので、Chronometerが起動した古い値を使用することができます。クロノメーターは実際に再開します。
アプリを実行します([実行構成]プルダウンから[ステップ2]を選択します) –