Les 5 secondes du Marketplace Test Kit

Lorsque vous développez pour la plateforme Windows Phone, vous pouvez tester les performances de votre application ainsi que vérifier si elle est conforme aux attentes du Marketplace en terme de package, temps de lancement, mémoire consommée, gestion d’exception.

Ces attentes ne sont pas les seules bien entendu, vous pourrez les consulter sur le site de Microsoft

Ce billet est destiné à ceux qui ont un problème avec le temps de lancement de leur application. Ma première app Epguides 7 était relativement simple et je n’ai pas eu le problème de temps de lancement. La durée avoisinait les 2.5 secondes et passait donc le test haut la main.

Horaires TaM par contre, utilise un contrôle panorama qui charge tous ses items au démarrage. Et le chargement seul des items de l’application prenait plus de 5 secondes lors de l’exécution du test. Le marketplace test kit mesure le chargement du début à la fin, et la durée ne représente pas la réalité ou l’utilisateur voit que l’appli est chargée au bout de 3 secondes. Mais Microsoft lors de la certification de votre application va utiliser les valeurs du test kit, il faut donc trouver une parade !

L’astuce en elle même est simple. Le marketplace test kit mesure le temps entre le démarrage de votre application et le chargement de la première page. Si votre première page est trop chargée, l’astuce consiste à placer une page intermédiaire de chargement qui se chargera rapidement et qui affichera une progress bar en attendant que votre vrai première page soit chargée.

L’écran intermédiaire est simple : On reprend le Splashscreen de l’application et on y ajoute une progress bar :

 

La partie code-behind est aussi simple :

 

Donc une page avec en fond la même image que le splashscreen (pour donner l’illusion qu’on reste dessus) et une progress bar indeterminate. Ensuite, des que la page intermédiaire est chargée elle va demander à aller sur la page principale de l’application.

Cette astuce est surtout nécessaire lors du premier lancement de l’application (le marketplace test kit simule toujours un premier lancement) car lorsque l’utilisateur lance votre application il n’y a pas ce problème.

Dans le fichier App.xaml.cs de votre projet, en fonction du paramètre vous indiquant si c’est le premier lancement ou non, vous décidez si la page intermédiaire sera chargée ou non :

Et voila, votre application affichera un écran de loading intermédiaire au premier lancement puis lancera directement la première page pour les lancements suivants. Ce procédé m’a permis de passer d’un lancement prenant entre 5 et 8 secondes à un résultat de 2.5 secondes.

Attention : Le loading screen sera présent dans les “BackEntry”, il faut donc la supprimer lors de l’arrivée sur la page principale (d’où le paramètre loading=1 dans le code précédent). Il faut également retirer ce paramètre du tableau de “QueryStrings”  :

L’application 20minutes.fr par exemple utilise ce procédé pour tous les lancements, une progress bar apparait sur le splashscreen avant d’afficher la liste des articles.

leave your comment

What is 31 + 31 ?
Please leave these two fields as-is:
Vous êtes humain ? Alors faites un petit calcul mental et c\'est terminé :)