Ce sera finalement arriver à votre question, mais je veux d'abord répondre à un certain nombre de questions que vous soulevez dans vos commentaires divers pour les différentes réponses déjà fournies au moment de cette écriture. Je n'ai pas l'intention de changer votre esprit -- ou plutôt, ce sont ici pour les autres qui viennent de lire ce post dans l'avenir.
Le point est que je ne peux pas permettre de
Android pour déterminer quand mon application est
va être résilié. qui doit être
le choix de l'utilisateur.
Des Millions de personnes sont parfaitement heureux avec le modèle de l'environnement, ferme l'application en tant que de besoin. Ces utilisateurs n'ont tout simplement pas penser à "la résiliation de" l'application Android, pas plus qu'ils ne pensent à propos de "terminaison" une page Web ou de "terminaison" un thermostat.
les utilisateurs d'iPhone sont beaucoup de la même manière, en cliquant sur le bouton iPhone n'a pas nécessairement de "sentir" que l'app a été résilié, depuis de nombreuses apps iPhone reprendre là où l'utilisateur l'a laissée, même si l'application était vraiment arrêter (comme l'iPhone ne permet qu'une seule application tierce à un moment, à l'heure actuelle).
Comme je l'ai dit ci-dessus, il y a beaucoup de
choses qui se passent dans mon application (données en cours d'
Poussé à l'appareil, les listes de tâches
qui doit toujours être là, etc).
Je ne sais pas ce que "listes de tâches qui doivent toujours être là", mais les "données d'être Poussé à l'appareil" est une agréable fiction et ne doit pas être fait par une activité, en tout cas. L'utilisation d'une tâche planifiée (via AlarmManager
) de mettre à jour vos données pour un maximum de fiabilité.
Nos utilisateurs de se connecter et ne peut pas être fait
chaque fois qu'ils reçoivent un coup de téléphone
et Android décide de tuer l'application.
Il existe de nombreuses applications iPhone et Androïde qui traitent de ce. Généralement, c'est parce qu'ils détiennent sur les informations d'identification d'ouverture de session, plutôt que de forcer les utilisateurs à se connecter à chaque fois manuellement.
Par exemple, nous voulons vérifier les mises à jour
lorsque vous quittez l'application
C'est une erreur sur n'importe quel système d'exploitation. Pour tous vous le savez, la raison pour laquelle votre demande est "sorti" c'est parce que l'OS est en cours d'arrêt, et ensuite, votre processus de mise à jour échoue à mi-parcours. En général, ce n'est pas une bonne chose. Vérifier les mises à jour sur démarrer ou vérifier les mises à jour totalement asynchrone (par exemple, via une tâche planifiée), de ne jamais quitter.
Certains commentaires laissent entendre que de frapper le
bouton retour ne tue pas l'application à
tous (voir le lien dans ma question ci-dessus).
Appuyez sur le bouton RETOUR ne pas "tuer l'application". Il termine l'activité qui était à l'écran lorsque l'utilisateur appuie sur le bouton RETOUR.
Il ne doit se terminer lorsque l'
Les utilisateurs veulent y mettre fin, jamais
jamais de toute autre manière. Si vous ne pouvez pas écrire
les applications qui se comportent comme ça dans Android,
puis je pense qu'android ne peut pas être utilisé
pour l'écriture réel apps =(
Alors ni peut les applications Web. Ou WebOS, si je comprends leur modèle correctement (n'ont pas eu la chance de jouer avec encore). Dans toutes ces applications, les utilisateurs de ne pas "mettre fin" à quoi que ce soit-ils les abandonnent. l'iPhone est un peu différent, en ce qu'il ne actuellement permet à une chose à la fois (avec quelques exceptions), et donc le fait de quitter implique une assez résiliation immédiate de l'application.
Est-il un moyen pour moi de vraiment arrêter
l'application?
Comme tout le monde vous l'a dit, les utilisateurs (par l'ARRIÈRE) ou votre code (via finish()
) peuvent se fermer actuellement en cours d'exécution de l'activité. Les utilisateurs n'ont généralement pas besoin d'autre chose, de bien-écrit applications, pas plus qu'ils ont besoin d'une option "quit" pour l'utilisation des applications Web.
Pas de deux environnements d'application sont les mêmes, par définition. Cela signifie que vous pouvez voir les tendances dans les environnements de nouvelles questions se posent et d'autres s'enterrent.
Par exemple, il y a un mouvement de plus en plus pour essayer d'éliminer la notion de "fichier". La plupart des Web apps ne pas forcer les utilisateurs à penser de fichiers. les applications de l'iPhone n'est généralement pas forcer les utilisateurs à penser de fichiers. Les applications Android en général de ne pas forcer les utilisateurs à penser de fichiers. Et ainsi de suite.
De même, il y a un mouvement de plus en plus pour essayer d'éliminer la notion de "terminaison" une application. La plupart des Web apps ne force pas l'utilisateur de se déconnecter, mais plutôt implicitement journal de l'utilisateur après une période d'inactivité. Même chose avec Android, et dans une moindre mesure, de l'iPhone (et, éventuellement, WebOS).
Cela nécessite davantage l'accent sur la conception de l'application, en se concentrant sur les objectifs de l'entreprise et ne collant pas avec un modèle de mise en œuvre liée à une demande précédente de l'environnement. Les développeurs qui n'a pas le temps ou l'envie de le faire ce sera frustré avec de nouveaux environnements qui cassent leur modèle mental. Ce n'est pas la faute de l'environnement, pas plus que c'est la faute d'une montagne pour les tempêtes qui coule autour d'elle plutôt qu'à travers elle.
Par exemple, certains environnements de développement, comme Hypercard et Smalltalk, si l'application et le développement des outils de co-mêlés dans une installation. Ce concept n'a pas pris beaucoup, en dehors de la langue des extensions pour les applications (par exemple, VBA dans Excel, LISP dans AutoCAD). Les développeurs qui sont venus avec des modèles mentaux qui présume l'existence d'outils de développement dans l'application elle-même, donc, que ce soit dû changer de modèle ou de se limiter à des environnements où leurs modèle serait vrai.
Donc, quand vous écrivez:
Le long de avec d'autres désordonné des choses que je
découvert, je pense que le développement de
notre app pour Android ne va pas
se produire.
qui semble être pour le mieux, pour vous, pour maintenant. De même, je voudrais vous conseiller à l'encontre de la tentative de port de votre application pour le Web, depuis certains des mêmes problèmes que vous avez signalé avec Android, vous trouverez dans les applications Web (par exemple, pas de "résiliation"). Ou, à l'inverse, un jour, si vous n' port de votre application pour le Web, vous pouvez constater que l'application Web de l'écoulement peut être un meilleur match pour Android, qui vous permet de retrouver un Android port à l'époque.