Sommeil () en Java (Android)
Je suis ce tutoriel pour avoir un écran de chargement dans mon programme. Le tutoriel dit mon activité devrait Sleep() à l'aide de la fonction Sleep() de commande, cependant, elle ne reconnaît pas le Sommeil() comme une fonction et me donne une erreur, me demandant si je souhaite créer une méthode Sleep().
Voici un lien vers le tutoriel:
http://androidcookbook.com/Recipe.seam;jsessionid=4DBCC1688B51DB16A2A40A86E135D361?recipeId=1599
Voici l'exemple de code:
public class LoadingScreenActivity extends Activity {
//Introduce an delay
private final int WAIT_TIME = 2500;
@Override
protected void onCreate(Bundle savedInstanceState) {
//TODO Auto-generated method stub
super.onCreate(savedInstanceState);
System.out.println("LoadingScreenActivity screen started");
setContentView(R.layout.loading_screen);
findViewById(R.id.mainSpinner1).setVisibility(View.VISIBLE);
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
//Simulating a long running task
this.Sleep(1000);
System.out.println("Going to Profile Data");
/* Create an Intent that will start the ProfileData-Activity. */
Intent mainIntent = new Intent(LoadingScreenActivity.this,ProfileData.class);
LoadingScreenActivity.this.startActivity(mainIntent);
LoadingScreenActivity.this.finish();
}
}, WAIT_TIME);
}
}
source d'informationauteur spogebob92
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser l'une des méthodes suivantes:
ou
SystemClock.sleep(milliseconds)
est une fonction très similaire àThread.sleep(milliseconds)
mais il ignoreInterruptedException
. Utilisez cette fonction pour les retards si vous n'utilisez pasThread.interrupt()
car elle permettra de préserver l'interruption de l'état du thread.La fonction est
Thread.sleep(long)
.Noter, cependant, que vous ne devez pas effectuer une veille sur le thread d'INTERFACE utilisateur.
Le code que vous avez posté est horrible. S'il vous plaît ne pas l'utiliser sur un périphérique réel. Vous obtiendrez un "l'Application ne Répond Pas" d'erreur si vous lancez quelque chose de semblable.
Si vous utilisez des Gestionnaires, gardez à l'esprit qu'un Gestionnaire est créé sur le thread dans lequel il s'exécute. Afin de l'appelant
new Handler().post(...
sur le thread d'INTERFACE utilisateur exécute l'exécutable sur le thread de l'INTERFACE utilisateur, y compris cette "opération longue à exécuter". L'avantage est que vous pouvez créer un Gestionnaire pour le Thread d'INTERFACE utilisateur que vous pouvez utiliser plus tard, comme indiqué ci-dessous.De mettre de l'opération longue à exécuter dans un thread d'arrière-plan, vous devez créer un Fil autour de l'exécutable, comme indiqué ci-dessous. Maintenant, si vous voulez mettre à jour l'INTERFACE utilisateur une fois la longue opération est terminée, vous devez poster que le Thread de l'INTERFACE utilisateur, à l'aide d'un Gestionnaire.
Noter que cette fonctionnalité n'est un ajustement parfait pour un
AsyncTask
qui fera de ce look beaucoup plus propre que le modèle ci-dessous. Cependant, j'ai inclus ce pour montrer la façon dont les Gestionnaires, les Threads et les Runnables se rapportent.utiliser Thread.sleep(1000);
1000 est le nombre de millisecondes que le programme se met en pause.
Garder à l'esprit: à l'Aide de ce code n'est pas recommandé, parce que c'est un retard de temps, mais sans contrôle et peuvent avoir besoin de plus ou moins de temps.