Несколько вызовов Android CountDownTimer по порядку. Подождите, пока один закончится, и начните другойJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Несколько вызовов Android CountDownTimer по порядку. Подождите, пока один закончится, и начните другой

Сообщение Anonymous »

Мне нужно запустить последовательные таймеры CountDownTimers, каждый из них будет вызываться ПОСЛЕ завершения другого, и у них будут разные конфигурации в onTick (я реализую это позже), и каждая «последовательность» будет выполняться определенное количество времени " rounds» (который я планирую обернуть цикл while позже). Но я просто не могу понять, как вызвать этот таймер обратного отсчета В ПОРЯДКЕ, один ПОСЛЕ завершения другого. Это исследование приложений для Android. Использование JAVA в Android Studio. Помогите?

Код: Выделить всё

package com.example.empty_tv_test;

import android.os.Bundle;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

import android.os.CountDownTimer;
import android.widget.TextView;

import java.text.DecimalFormat;
import java.text.NumberFormat;

public class MainActivity extends AppCompatActivity {

private TextView textView;
private Boolean isThreeSecondsCountDownOver = true;
private Boolean isTimerRunning = true;
private Boolean isMainCounterOver = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});

// Initialize the TextView
textView = findViewById(R.id.textViewTimer);

// Start CDT 1
//Start the CountDown
//Avoiding infite runs
boolean didThreeSecondsRun = false;
boolean didMainTimerRun = false;
boolean didRestTimerRun = false;
while (isTimerRunning) {
//Run for as many rounds as necessary /
//TO-DO Wrap this with FOR loops for Rounds
//First Check: Is 3 Seconds Countdown?
if (isThreeSecondsCountDownOver && !didThreeSecondsRun){
StartCountDownTimer(2000, 1);
//Turn 3 SEC off
didThreeSecondsRun = true;
}
if (!isThreeSecondsCountDownOver && !didMainTimerRun){
//3 Seconds Coundown is over, start main counter
StartCountDownTimer(7000, 2);
didMainTimerRun = true;
isTimerRunning = false;
}
if(isMainCounterOver && !didRestTimerRun){
//Finally the Rest Round is Fired
StartCountDownTimer(8000, 3);
didThreeSecondsRun = true;
isTimerRunning = false;
}
}

}//END of onCreate

//TimerType: 1. 3 SEC, 2. Main, 3. Rest
public void StartCountDownTimer(int time, int whichTimerType){
new CountDownTimer(time, 1000) {
@Override
public void onTick(long millisUntilFinished) {
// Used for formatting digits to be in 2 digits only
NumberFormat f = new DecimalFormat("00");
long hour = (millisUntilFinished / 3600000) % 24;
long min = (millisUntilFinished / 60000) % 60;
long sec = (millisUntilFinished / 1000) % 60;
textView.setText(f.format(hour) + ":" + f.format(min) + ":" + f.format(sec));
}
@Override
public void onFinish() {
// When the task is over it will print 00:00:00
textView.setText("ZZZZZZZ");
if (whichTimerType == 1){
isThreeSecondsCountDownOver = false;
}
if (whichTimerType == 2){
isMainCounterOver = true;
}
if (whichTimerType == 3){
isMainCounterOver = false;
}

}
}.start();
}

}



Подробнее здесь: https://stackoverflow.com/questions/790 ... -and-start
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»