web-dev-qa-db-fra.com

Comment puis-je simuler une application tuée en arrière-plan?

J'essaie de vérifier que mon application (App1) se comporte correctement lorsqu'elle est arrêtée par le système après le lancement d'une autre application (App2). Existe-t-il un moyen de simuler ou de forcer ce comportement?

Dire au simulateur de simuler un avertissement de mémoire pendant que App2 est en cours d'exécution ne fait rien tant que App1 n'est pas ramené au premier plan. Est-ce que tuer App1 à partir du débogueur simulerait la même séquence d'événements d'application?

EDIT: Mon application est placée en arrière-plan lorsqu'elle lance une deuxième application pour gérer un fichier. Cette deuxième application relance ensuite mon application et j'essaie de vérifier que mon application se comporte correctement lorsque le système l'a arrêtée pendant l'exécution de la deuxième application.

36
Greg

Oui, si votre application est déjà en arrière-plan. Une application tuée par le système en arrière-plan se termine sans avertissement - aucune méthode de délégué d'application n'est appelée, aucun changement d'état n'est effectué - c'est exactement ce qui se passe lorsque vous arrêtez le débogueur alors que l'application est en arrière-plan. (Cela suppose que vous ayez déjà mis votre application en arrière-plan en cliquant sur le bouton d'accueil du simulateur ou sur Cmd-Shift-H)

(Comme le note @Inafziger, vous pouvez également obtenir le même effet en utilisant l'interface du simulateur pour forcer la fermeture de l'application en cours d'exécution.)

11
Ben Zotto

Comme le notent les autres réponses, vous pouvez immédiatement mettre fin à votre application en la forçant à la quitter ou en arrêtant le débogueur. Votre application ne recevra aucun avertissement dans ces cas.

Si vous cherchez à tester vos méthodes applicationWillTerminate, définissez UIApplicationExitsOnSuspend sur YES dans votre .plist, puis changez d'application ou appuyez sur le bouton d'accueil. Assurez-vous de définir la clé sur un booléen, pas sur la chaîne "OUI".

23
Aaron Brager

Je sais que cela fait quelques années, mais je voulais partager si quelqu'un d'autre se penche sur cette question maintenant. Essayez les étapes suivantes:

  1. Exécutez l'application sur un appareil
  2. Appuyez une fois sur le bouton d'accueil pour accéder à l'écran d'accueil
  3. Appuyez et maintenez le bouton d'alimentation pendant 5 secondes jusqu'à ce que vous voyiez le curseur de mise hors tension
  4. Appuyez et maintenez le bouton d'accueil pendant 5 secondes

Si vous exécutiez l'application à partir de Xcode, vous devriez voir Message from debugger: Terminated due to signal 9

10
drewg23

Tu devrais être capable de:

  • Appuyez sur le bouton d'accueil pour accéder à l'écran d'accueil
  • Appuyez deux fois sur le bouton d'accueil (utilisez le raccourci clavier dans le simulateur)
  • Touchez et maintenez l'icône en bas jusqu'à ce qu'elle commence à bouger
  • Appuyez sur le cercle de tiret - pour le supprimer de la mémoire

Cela vous donne les méthodes de délégué d'application pour aller en arrière-plan, etc. Voici comment cela fonctionne dans iOS 6 et les versions antérieures.

7
lnafziger