J’ai ma radio qui plante

DISCLAIMER : Cet article a été sponsorisé intégralement par moi-même.

J’ai récemment développé une application Radio pour le groupe Radio France tout à fait bénévolement (voir l’article) afin que Windows Phone puisse bénéficier lui aussi d’une application de qualité en la matière (#radiofrance4WP).

Vous pouvez retrouver l’application ici : https://www.microsoft.com/fr-fr/store/apps/radio-france-direct/9nblggh1kctr

C’est la première fois que je touchais à ce genre d’application et j’avoue que c’est relativement simple à mettre en place.

Pourtant lors du déploiement de la seconde version de l’app une personne me contacte pour me remonter que l’application ne fonctionne pas chez lui.
Elle se ferme immédiatement sur ces deux appareils. Je m’oriente vers un problème réseau.
Je lui demande de rebooter son app et tout fonctionne à nouveau.

Deux jours plus tard, je remonte une nouvelle version, et là deux nouvelles personnes me contactent via Twitter.
L’application ne se lance plus ! Après un reboot plus de problème.

Le mystère s’épaissit

En regardant de plus près les commentaires des apps radio sur le store, il s’avère que quelques personne souffrent du même mal et se plaignent que leur application radio favorite ne fonctionne plus après parfois des semaines d’utilisation sans problème.

 » Ca me met une erreur de connexion et l’appli se ferme tout seul :/  » – Inconnu – Radio.fr

< Impossible d'écouter depuis 2 semaine " Erwan - Radio.fr " Fonctionnement très aléatoire " - Franciso - Radio.fr

Inspecteur Blanchard à la rescousse !

l_acteur_de_derrick___tait_un_ancien_ss___9233_north_615x0

La chose étrange c’est que mon application ne plante pas en Debug mais seulement en Release.
Le débuggage ne va donc pouvoir se faire que par log de fichier.

En analysant les logs je m’aperçois que l’app plante souvent après le lancement de la tache du player Audio.
Je me concentre donc sur celle-ci.
Dans cette tache, comme tout bon player qui se respecte, j’ai implementé le BackgroundMediaPlayer.Shutdown() dans l’événement d’annulation de la tâche.
J’ai alors une intuition : Que se passe t’il quand l’application est killée avant que l’annulation de la tâche n’a pu être appelée et donc que le BackgroundMediaPlayer.Shutdown n’a pas fonctionné ?
Apparement cela rend le BackgroundMediaPlayer légérement furax et il refuse de se réinitialiser de nouveau.

Résultat l’app plante sans autre forme de procès.

J’ai l’impression que cela arrive particulièrement lors des mises à jour des apps qui sont encore en train de fonctionner.

Et la solution est…

Dès l’initialisation de l’app, avant même que le Background soit lancé pour éviter tout problème, n’hésitez par à ajouter cette ligne :

        public App()
        {
#if WINDOWS_PHONE_APP
   try
   {
      // je suis tranquille maintenant
      BackgroundMediaPlayer.Shutdown();
   }
   catch
   {
   }
#endif
   
   this.InitializeComponent();
   ...
}

Vous serez ainsi complètement sûr qu’un vieux BackgroundMediaPlayer pas propre ne vienne vous embêter !
Il existe peut être une manière plus propre d’effectuer ce nettoyage mais c’est la seul qui fonctionne à ma connaissance.

Et n’oubliez pas : soutenez la cause #radiofrance4WP les amis !

leave your comment