定时器记录问题?

时间:2015-11-04 01:51:28

标签: java android timer

我正在制作一个有计时器的应用程序。我希望在10秒钟后登录logcat。计时器在20秒时执行不同的任务。这是我的尝试:

enter image description here

以下是代码:

public class TwentySeconds extends Service {

MediaPlayer mp;

final String TAG = "MyCountdown";

CountDownTimer cdt;

@Nullable
@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    Log.v(TAG, "In start command");

     cdt = new CountDownTimer(20000, 1000) {

        @Override
        public void onTick(long millisUntilFinished) {
            long timeRemaining = 20000 - millisUntilFinished;
            if(timeRemaining % 1000 == 0){
                Log.v(TAG, "Time remaining" +(timeRemaining % 1000) + " seconds left");
            }
        }
        @Override
        public void onFinish() {
            Log.v(TAG, "Finished");

            Intent intent = new    Intent(TwentySeconds.this,GameOver.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            Log.v(TAG, "About to start activity");
            startActivity(intent);
        }
    };
    cdt.start();
    return START_STICKY;
}
@Override
public void onDestroy() {
    super.onDestroy();
}
}

代码的逻辑似乎很好,但由于某种原因,它没有显示。非常感谢您的所有时间,请告诉我。

{Rich}

1 个答案:

答案 0 :(得分:1)

CountDownTimer不是100%精确的计时器,所以你不应该尝试进行这样精确的计算,因为它会在99%的时间内失败。

也许只是这样做:

millisUntilFinished / 1000

因为你的间隔是1秒。

试试这个:

 @Override
    public void onTick(long millisUntilFinished) {
          long timeRemaining = 20000 - millisUntilFinished;
          Log.v(TAG, "Time remaining " + (timeRemaining / 1000) + " seconds left");
    }