2011-06-11 1 views
1

Je lance mon application iPod touch, puis je passe en arrière-plan et change la langue de l'appareil à partir de l'application Réglages et essaie d'amener cette application au premier plan. Mon application est redémarrée et je n'arrive pas à l'écran où j'ai quitté l'application quand je suis passé en arrière-plan. Est-ce parce qu'un signal KILL est envoyé par l'application de paramètres lorsque la langue a été changée? Est-ce le comportement souhaité?Modification de la langue de l'appareil lorsque l'application est en arrière-plan

Répondre

1

Je ne savais pas que le changement de langue entraînerait la fin des applications, mais ce n'est pas choquant. C'est un moyen très simple d'obtenir ce que l'utilisateur veut. Votre problème n'est pas le changement de langue, cependant. Le problème est que vous ne répondez pas correctement à une notification de résiliation. Vous pouvez être résilié à tout moment lorsque vous êtes en arrière-plan, et c'est votre travail pour y faire face.

Votre délégué d'application doit implémenter applicationWillTerminate: (ou vous pouvez observer partout où cela est pratique). Lorsque vous recevez cela, vous devez enregistrer suffisamment d'informations pour vous retrouver où vous étiez lorsque vous redémarrez. Autant que possible, vous devriez le faire regarder à l'utilisateur que vous n'avez pas terminé. L'endroit le plus facile à enregistrer est généralement NSUserDefaults, mais vous pouvez utiliser n'importe quel mécanisme que vous aimez.

Le redémarrage de l'application de gestion est l'une de ces choses qui sépare les excellentes applications iOS de «assez bon».

+0

Non. Vous ne recevez pas de rappel pour applicationWillTerminate. – Abhinav

+0

Désolé, habitudes iPhone3. Vous devriez le faire dans 'applicationDidEnterBackground:' pour iOS 4. –

Questions connexes