2017-07-25 6 views
-1

suspension de contrôle, de la reprise et le démarrage Windows Phone Apps avec Windows RT, il y a 3 événements: OnLaunching -> OnLaunched respectivement OnSuspending OnResumingWindows Phone App Redémarre au lieu de Curriculum vitae bien qu'il apparaisse dans la liste des tâches

Normalement, si une application est lancée, lors du lancement de OnLaunching. Lorsque l'application est suspendue, par ex. l'économiseur d'écran apparaît, OnSuspending est déclenché. Si je retourne à l'application en ouvrant la liste des tâches, OnResuming est renvoyé.

Maintenant, j'ai le problème suivant.

Si je passe à une autre application ou si l'économiseur d'écran apparaît, OnSuspending est déclenché - c'est OK. Mais si je retourne à mon application via la liste des tâches après environ 15-20 minutes, l'événement OnLaunching est déclenché au lieu de OnResuming, bien que mon application apparaisse toujours dans la liste des tâches.

C'est comme si l'application venait d'être lancée!

Cela se produit depuis que j'ai redessiné l'application dans Windows 8.1 RT. Dans la version antérieure de mon application, qui fonctionnait sous Silverlight, cela fonctionnait correctement. Chaque fois que je suis retourné à mon application via la liste des tâches, OnResuming a été viré. En effectuant quelques tests, j'ai découvert ce qui suit: En lançant une application, l'état d'exécution précédent peut être lu depuis ActivateEventArgs. Donc, je les lis pour voir, quel était le statut de l'application avant le lancement. Après avoir démarré l'application pour la première fois, son état est 'notRunning'. Si je ferme l'application et la rouvre, l'état est 'closedByUser'. Si l'application a été suspendue et que je la révoque après 15-20 minutes, l'état est 'terminé'.

Cependant, l'état «terminé» signifie, les fenêtres a été fermé l'application. Pourquoi les fenêtres ferment-elles mon application après 15-20 minutes et pourquoi l'application est toujours dans la liste des tâches si elle a été fermée?

Avez-vous une idée, quel est le problème?

Répondre

0

J'ai été informé par Microsoft: Le système d'exploitation peut mettre fin à une application afin de libérer des ressources. Mais une telle augmentation peut toujours apparaître dans la barre des tâches. Si l'application suspendue a été interrompue, il n'y a aucun événement de reprise et OnLaunched() est appelée avec un ApplicationExecutionState de Terminated. Ainsi, les routines pour restaurer l'état de l'application doivent être appelées OnLaunched().

Il est parfois nécessaire de distinguer si l'application a été relancée par liste des tâches ou par mosaïque. Pour cela, utilisez la propriété TileId dans le OnLaunched(). TileId est « App » si l'application a été commencé par le carreau et il est vide si l'application a été relancée par tasklist. TileId pourrait également avoir une autre valeur si vous générez par exemple.une deuxième tuile pour l'application en leur donnant un autre identifiant.

Cependant, cela ne fonctionne pas dans Windows 8.1 car la valeur de TileId est toujours "App" indépendante du démarrage par liste de tâches ou par tuile standard.