J'ai défini un splashscreen à afficher pendant le chargement. Mais en fonction de la connexion internet, il ne faut que 600ms pour charger ou parfois 5000ms. J'ai donc défini que l'écran de démarrage est au moins montré 3000ms de sorte que l'utilisateur ne soit pas irrité par écran flackering.Handler.sendMessageDelayed (msg, delay) ne fonctionne pas correctement
Je définir le début de la splashscreen de la manière suivante:
private void splashScreen() {
setContentView(R.layout.splashscreen);
splash = (ImageView) findViewById(R.id.splashscreenLayer);
startSplashTime = new Date();
new LoadingThread().start();
}
Dans le LoadingThread je vérifie le réseau et les données de charge de l'Internet:
private class LoadingThread extends Thread {
@Override
public void run() {
checkNetwork();
}
}
Dès que le chargement se fait, J'envoie un message à mon gestionnaire défini dans MainActivity:
Un peu de code es sur les threads de chargement sont appelés par runOnUIThread(). Malheureusement, si le temps < SPLASH_MIN_TIME le message n'est pas retardé mais envoyé instantanément. Je pense qu'avec sendMessageDelayed() cela ne devrait pas être le cas. Quelqu'un sait pourquoi? Le sysout montre que le temps de retard est calculé correctement. Merci!
Pourriez-vous ajouter le code sur la façon dont vous initialisez le gestionnaire et le code à l'intérieur de votre classe Handler? – user697495