35 votes

Quitter l'application dans iOS 4.0

Avant iOS4.0, cliquer sur le bouton d'accueil de l'iPhone ferme l'application, et Apple avait dans son guide que la sortie programmée de l'application n'était pas acceptée.

maintenant tout a changé dans iOS4.0, cliquer sur le bouton d'accueil met votre application en mode suspendu (multitâche) .. et je pense qu'il devrait y avoir un moyen clair pour l'utilisateur de quitter l'application, comme un bouton de sortie.

est-ce que ça va maintenant avec la pomme? et comment le faire?

50voto

Joost Schuur Points 3291

Vous pouvez définir la clé Info.plist UIApplicationExitsOnSuspend pour vous assurer que l'application est complètement terminée.

24voto

Eiko Points 19502

Pas encore ne devraient pas faire cela.

Vous avez des gestionnaires pour les différentes étapes, de sorte que ce est la façon dont vous devriez le faire. Il n'y a pas de point de sortir manuellement. Si vous redémarrez l'application, l'idéal serait de commencer là où vous l'avez laissé, donc c'est soit par la reprise ou par le démarrage et le chargement de l'ancien état.

Aucune raison de quitter.

Modifier

Car cela permet de garder popping up à nouveau: iOS Human Interface Guidelines dit "Ne Quittez pas par programme". Et nous avons vu de nombreux rapports d'applications qui avait des appels à exit() dans le passé.

Sortie au lieu de la suspension par la définition de la clé appropriée dans l'Info.fichier plist est parfaitement bien, bien sûr - mais ce n'est pas un dédié de l'INTERFACE utilisateur Bouton, il suffit de spécifique à l'application de la mise en œuvre de la sortie du programme par le bouton home.

8voto

Stanislav Kutil Points 81

Il y a une raison pour par programme invoqué exit().

Supposons que vous avez une application voip qui est toujours lancé au démarrage et au redémarrage quand ils sont tués par le système, par exemple lors de l'avertissement de mémoire se produit. Normalement, il est préférable de comportement parce que vous avez besoin pour s'exécuter en arrière-plan afin de maintenir votre voip sockets TCP.

Toutefois, si l'application prend en charge plusieurs modes de fonctionnement - comme a) exécuter en arrière-plan à l'aide de TCP, et b) de ne pas s'exécuter en arrière-plan, mais commencer qu'après l'acceptation de notification PUSH -, si l'utilisateur utilise l'application en b) mode il n'a pas envie que l'application consomme de la mémoire qui peut être utilisé pour d'autres applications.

Donc ce serait bien si l'application peut vérifier dès le début si on a commencé à l'arrière-plan et de l'utilisateur voulait l'application de s'exécuter dans b) le mode et gracieusement exit(0) il n'est donc plus automatiquement redémarré.

6voto

jww Points 9514

Voir aussi iOS de Débogage de la Magie (Note Technique TN2239):

Être conscient que l'application iOS du cycle de vie est sous contrôle de l'utilisateur, ce qui signifie que les applications iOS ne devrait pas tout simplement cesser de fumer. Votre communiqué de construire ne devrait appeler avorter dans des circonstances où il aurait écrasé de toute façon, et l'abandon d'appel pour éviter d'endommager les données de l'utilisateur ou vous permet de plus facilement diagnostiquer le problème.

Alors que sur le sujet de la détermination de la cause de la sortie prématurée, la Compréhension et l'Analyse de l'iPhone OS Crash de l'Application des Rapports (Note Technique TN2151) pourrait être d'intérêt.

Désolé pour aller hors sujet un peu, mais il se rapporte à la sortie au plus tôt et le diagnostic.

Jeff

3voto

Yoichi Points 2617

J'ai eu un vrai problème avec cette. Il y a un gros point d'en sortir manuellement ou prgramatically.

Avec les précédents iPhone OS, mon application a été écrit de son état (première utilisation ou la deuxième fois,, etc.) dans un plist lorsqu'elle a mis fin. Lorsque l'utilisateur est revenu, il a voulu montrer des choses différentes par la lecture de la plist. Aussi, il a voulu montrer le premier écran à chaque fois que l'utilisateur revient après la sortie.

Avec l'app de devenir en suspension dans l'arrière-plan avec l'iPhone OS4, l'application revient là où il a laissé (c'est à dire en montrant le même écran où l'utilisateur était sur) et ne change pas l'état de il, parce que applicationWillTerminate est maintenant a jamais appelé.

Becasue c'est le comportement souhaité la plupart du temps (pour pouvoir continuer lorsque vous sortez de l'application temporaire), il y a une façon d'être en mesure de choisir, c'est à dire le suspendre ou l'arrêter.

Depuis la création de la UIApplicationExitsOnSuspend=OUI donne que d'une seule façon (c'est à dire qu'il se termine toujours lorsque la MAISON est pressé), ce n'est pas une solution, je suis à la recherche d'.

Je veux que l'application à savoir une fois que l'ensemble de la chaîne de la procédure est terminée, plutôt que de simplement la séquence a été suspendu, et de cesser de lui-même au bon moment.

Pour ce faire, je dois être en mesure de mettre fin à l'application et à l'écriture de l'état, une fois l'utilisation terminée l'ensemble de la séquence. D'autres fois, j'ai envie de l'application pour être suspendu.

Si vous appuyez sur le bouton de la MAISON deux fois, vous pouvez voir de la suspension des apps. Je peux supprimer (quitter) mon application en touchant plus de temps et de toucher le symbole (-) qui arrive, mais ce n'est pas très intuitif pour les utilisateurs et trop d'étapes.

Une autre option est d'avoir un bouton Quitter comme l'un de la valeur liquidative des Onglets dans mon application, mais que c'est moche. Pour l'instant, ma seule option semble être d'opter pour l'ensemble de la UIApplicationExitsOnSuspend=OUI.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X