Android 安卓天文钟

Android 安卓天文钟,android,chronometer,Android,Chronometer,我正在开发一个android应用程序,我的计时器有问题。 当调用onChronometerTick方法时,TextView应该在第60秒得到更新,但它在第58秒第一次得到更新。如果你暂停并再次启动计时器,它会在不同的时间更新。我发现当我启动计时器时,onChronometerTick方法会被调用两次,这就是我的问题所在!有人能帮我吗? 谢谢 这是我的密码: int br = 0; @Override protected void onCreate(Bundle savedInstanceSta

我正在开发一个android应用程序,我的计时器有问题。 当调用onChronometerTick方法时,TextView应该在第60秒得到更新,但它在第58秒第一次得到更新。如果你暂停并再次启动计时器,它会在不同的时间更新。我发现当我启动计时器时,onChronometerTick方法会被调用两次,这就是我的问题所在!有人能帮我吗? 谢谢

这是我的密码:

int br = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    bProg = (Button) findViewById(R.id.bProgram);
    bProg.setOnClickListener(this);

    tv = (TextView) findViewById(R.id.textView1);


    chrono = (Chronometer) findViewById(R.id.chronometer);
    chrono.setBase(SystemClock.elapsedRealtime());
    chrono.setOnChronometerTickListener(this);
    chrono.stop();

}

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.bProgram:
        Log.d(TAG, "bProgram Clicked");
        checkButton();

        // Change the electricity consumption for the given program
        changeConsumption();

        calculateSecondPrice();

        tvCons.setText(String.valueOf(consumption * 1000 + " W"));
        tvPrice.setText(String.valueOf(price + " lv."));

        if (prog > 0) {
            startChronometer();
        }

        if (prog == 0) {
            pauseChronometer();
        }
        break;
    }
}



private void pauseChronometer() {
    timeWhenStopped = chrono.getBase() - SystemClock.elapsedRealtime();

    chrono.stop();
}

private void startChronometer() {
    if (prog == 1) {
        chrono.setBase(SystemClock.elapsedRealtime() + timeWhenStopped);
        chrono.start();
    }
}



@Override
public void onChronometerTick(Chronometer chronometer) {
    br++;

    totalPrice += secondPrice;

    if (br == 60) {
        br = 0;
        tv.setText(String.valueOf((double) (totalPrice) / 1000000));
    }
}

}好的,我找到了一个方法。这帮助了我: