Thread pour patienter
Philippe49
Membre
Au lancement de mon application, j'ai une interface un peu lourde à charger, et en même temps j'ai une question à poser à l'utilisateur. Vous feriez comment ?
2 threads (mainthread avec le dialogue utilisateur+chargement) , 3 threads (mainthread+chargement+dialogue utilisateur) ?
2 threads (mainthread avec le dialogue utilisateur+chargement) , 3 threads (mainthread+chargement+dialogue utilisateur) ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
La main thread demande le chargement dans un autre thread, puis affiche la question, puis splashscreen (éventuellement) ou interface avec une roue...
Concrètement, mon chargement est celui d'un nib, et le choix de l'utilisateur c'est rentrer son nom/prendre le précédent pour le jeu
Pour l'instant, je suis sur le schéma de 3 threads, et à la fin de chaque thread je fais un performSelectorOnMainThread vers une méthode dans laquelle je fais un compte à rebours des threads pour finir par le flush. Si il y a mieux, je suis preneur.
Les splashscreen sont faits pour ça :P
Qu'est-ce que tu appelles splash screen ?
Le splash screen c'est l'image qui s'affiche pendant le chargement de l'interface qu'on voit dans de nombreux logiciels.
J'ai donc un chargement du xib du dialogue avec le joueur (immédiat), et un chargement en parallèle de l'interface du jeu qui lui prend 2ou 3 secondes. (C'est sur iPhone , il y a une seule fenêtre, la présentation modale serait moche)
* Main thread
- Commence sa runloop
- Affiche le panneau pour l'utilisateur
- Une fois terminé, attends (éventuellement) le chargement avec un indicateur sur le panneau pour l'utilisateur (mais la main runloop tourne toujours)
* Second thread
- Charge le .nib
- Attends (éventuellement) que l'utilisateur ait fini son choix (avec un while et des sleep)
- Demande à la main thread d'arrêter l'indicateur, de cacher le panneau pour l'utilisateur et de lancer l'interface principale