Pour ma nouvelle application Android, j'ai besoin d'une fonction qui expire mon application pendant 3 secondes. J'ai essayé la fonction "sleep ()" comme ceci:
seekBar1.setProgress(50); // Set something for my SeekBar
try{
Thread.sleep(3000); // Wait for 3 Seconds
} catch (Exception e){
System.out.println("Error: "+e); // Catch the exception
}
button.setEnabled(true); // Enable my button
Cela semble fonctionner, mais si j'exécutais l'application, il le fait comme suit: attendez 3 secondes, définissez la progression et activez le bouton. Je veux d'abord définir la progression et ensuite attendre 3 secondes et ensuite seulement pour activer le bouton.
Est-ce que "sleep ()" convient à mon usage ou que puis-je faire si mon application le fait dans le bon ordre?
Vous pouvez utiliser la méthode postDelayed()
comme ceci:
handler=new Handler();
Runnable r=new Runnable() {
public void run() {
//what ever you do here will be done after 3 seconds delay.
}
};
handler.postDelayed(r, 3000);
Vous ne devriez jamais bloquer le fil d'interface utilisateur en dormant. Son ok pour dormir sur un autre thread, mais même alors, il devrait être évité. Pour ce faire, vous pouvez poster un Runnable dans un gestionnaire. Ensuite, mettez le code que vous voulez exécuter après le délai dans la méthode run () du Runnable.
Vous pouvez définir une Handle
dans votre activité et utiliser Handle.postDelayed()
à partir de onCreate()
de l'activité pour recevoir un message sur ce descripteur en 3 secondes. Lors de la réception, vous pouvez activer le bouton.
Vous pouvez faire la même chose en utilisant AsyncTask
où dans doInBackground()
vous ne dormez que pendant 3 secondes. Ensuite, dans onPostExecute()
, vous activez le bouton.
Utilisez l'objet de la classe Handler et utilisez la méthode handler.postDelayed (thread, time). N'utilisez pas sleep (), il bloquera le thread ui.