3

クロノメーターをアプリに追加したところ、動作がおかしくなりました。数を数える代わりに、CHARS で計算しています! 例:

00:00:00
00:00:0(
00:00:0)
00:00:0/
00:00:0*
00:00:0+
... LOOPS AFTER 10
00:00:00
00:00:0(
00:00:0)
00:00:0/
00:00:0*
00:00:0+

xml

        <Chronometer
            android:id="@+id/tracking_time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_toRightOf="@id/record_indicator"
            android:textColor="@color/tracking_time"
            android:textSize="14dip"
            android:textStyle="bold" />

onCreate

        mTrackingTime = (Chronometer)this.findViewById(R.id.tracking_time);
        mTrackingTime.setOnChronometerTickListener(this);

始める

    mTrackingTime.setBase(System.currentTimeMillis());
    mTrackingTime.start();

折り返し電話

    @Override
    public void onChronometerTick(final Chronometer chronometer) {
    }
4

2 に答える 2

2

これらの文字は、基数が よりも大きい場合に表示SystemClock.elapsedRealtime()されます。これは、起動からのミリ秒数です。

この引数の結果が表示されます。

SystemClock.elapsedRealtime() - base

デフォルト、または呼び出す場合:

chronometer.setBase(SystemClock.elapsedRealtime());

するとクロノメーターがスタートします00:00

あなたが呼び出す場合:

chronometer.setBase(SystemClock.elapsedRealtime() - 10000);

するとクロノメーターがスタートします00:10

あなたが呼び出す場合:

chronometer.setBase(SystemClock.elapsedRealtime() + 10000);

その後、クロノメーターは 10 秒間ゴミを吸い込み、次から始めます。00:00

したがって、次のように呼び出す場合:

chronometer.setBase(System.currentTimeMillis());

約 44 年間ゴミが見られることを期待する必要があります。

于 2014-04-26T20:24:55.223 に答える
1

私の理解によると、経過リアルタイムChronometer.setBase()に基づいてミリ秒が必要です。これは、エポックミリ秒が機能しないことを意味します。エポック ミリ秒を使用できるようにするには、次のように呼び出す必要があります。Chronometer.setBase()

chronometer.setBase(SystemClock.elapsedRealtime());

この計算は、エポック ミリ秒を経過リアルタイム ミリ秒に効果的に変換します。

これを試して、問題が解決するかどうかを確認してください...

@Ef Es コメントに従って更新..

于 2012-12-21T10:20:31.513 に答える