Maison >Java >javaDidacticiel >Comment implémenter un compte à rebours dans Android sans fil de discussion ?
Thème Android pour un minuteur : conseils et solutions
Pour créer un compte à rebours dans Android, utiliser un fil de discussion est une approche. Cependant, le code fourni rencontre des problèmes lors de la mise à jour de l'interface utilisateur à partir d'un thread non-UI. Voici quelques solutions alternatives :
1. CountDownTimer :
Cette classe fournit un moyen simple d'implémenter des comptes à rebours. Il s'exécute sur un thread séparé et met à jour l'interface utilisateur sur le thread principal.
Exemple :
<code class="java">public class MainActivity extends Activity { private CountDownTimer timer; private TextView timerText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); timerText = (TextView) findViewById(R.id.timerText); startTimer(5 * 60 * 1000); // Set initial countdown time in milliseconds } private void startTimer(long timeInMilliseconds) { timer = new CountDownTimer(timeInMilliseconds, 1000) { @Override public void onTick(long millisUntilFinished) { timerText.setText(String.format("%d:%02d", millisUntilFinished / 60000, (millisUntilFinished % 60000) / 1000)); } @Override public void onFinish() { timerText.setText("0:00"); } }.start(); } }</code>
2. Gestionnaire :
Les gestionnaires vous permettent de planifier des tâches à exécuter sur le thread principal. Cette approche vous donne plus de contrôle sur le timing et le comportement du minuteur.
Exemple :
<code class="java">public class MainActivity extends Activity { private Handler handler; private Runnable timerTask; private TextView timerText; private int timeLeft = 300; // Initial time in seconds @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); timerText = (TextView) findViewById(R.id.timerText); handler = new Handler(); timerTask = new Runnable() { @Override public void run() { if (timeLeft > 0) { timeLeft--; timerText.setText(String.format("%d", timeLeft)); handler.postDelayed(timerTask, 1000); // Recursively schedule the task } else { timerText.setText("0"); } } }; handler.post(timerTask); // Start the timer } }</code>
3. Timer :
La classe Timer peut également être utilisée pour planifier des tâches. Il s'exécute sur un thread séparé et vous permet de mettre à jour l'interface utilisateur à l'aide de la méthode runOnUiThread().
Exemple :
<code class="java">public class MainActivity extends Activity { private Timer timer; private TimerTask timerTask; private TextView timerText; private int timeLeft = 300; // Initial time in seconds @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); timerText = (TextView) findViewById(R.id.timerText); timer = new Timer(); timerTask = new TimerTask() { @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { if (timeLeft > 0) { timeLeft--; timerText.setText(String.format("%d", timeLeft)); } else { timer.cancel(); // Stop the timer timerTask.cancel(); timerText.setText("0"); } } }); } }; timer.scheduleAtFixedRate(timerTask, 1000, 1000); // Schedule the task at a fixed rate } }</code>
Ces alternatives offrent des fonctionnalités plus fiables et plus efficaces. façons de mettre en œuvre un compte à rebours dans Android. Choisissez l'approche qui correspond le mieux à vos besoins et aux exigences spécifiques de votre application.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!