4

私は、ユーザーが何をしているかについてクロノメーターをユーザーに表示するアプリケーションを持っています。アクティビティがバックグラウンド (ホーム ボタンまたはバック) に移行するたびに、その時間を (秒単位で) 保存し、アクティビティが戻ってきたら、同じ時間からクロノメーターの実行を継続したいと考えています。ユーザーがリストから別のアイテムを選択すると、時刻が異なり、電話の電源を切る可能性もあります... クロノメーターの時刻を保存できますが、開始時刻を設定することはできません。

Chornometer APIから、メソッドは次のようにsetBase()述べています。

カウントアップタイマーの基準となる時間を設定します。

私の理解では、これは、この値を currentTime に設定すると、0 からカウントが開始されることを意味します。17 秒の値で開始する場合は、ベースを currentTime から 17 秒前の時間に設定することを考えました。 . 次のようなものです:

setBase(system.currentTimeMillis() - (17 * 1000)).

ただし、これは機能せず、常に 0 から始まります。

ここで他のいくつかのスレッドを読みましたが、答えはどれも役に立ちませんでした。常に 0 から始まります。

前もって感謝します。

4

2 に答える 2

9

いくつかのタイムマークを自分で追跡する必要があると思います。

Chronometer myChrono;
long baseTime;
long stopTime;
long elapsedTime;

基準時間を設定するときは、次を使用します。

baseTime = SystemClock.elapsedRealtime() - stopTime;
myChrono.setBase(baseTime);

経過時間を確認したい場合は、次を使用します。

elapsedTime = SystemClock.elapsedRealtime() - myChrono.getBase();

SystemClock docを見てください。

于 2013-05-10T08:55:10.613 に答える