我正在制作一个有计时器的应用程序。我希望在10秒钟后登录logcat。计时器在20秒时执行不同的任务。这是我的尝试:
以下是代码:
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}
答案 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");
}