2011-09-16 3 views
1

J'ai une application, qui utilise un ActicityGroup pour avoir une pile d'activités. Si je commence une nouvelle activité, je le fais en tant qu'enfant de mon ActivityGroup. Lets suppose que je suis dans mon activité de départ (1), et je commence une nouvelle (2), voici donc ce qui s'appelle:Android Activity-Lifecycle ... comment éviter onDestroy()?

(1): OnPause()

(2): onCreate(), onStart(), onResume()

jusqu'à ici, tout comme aspect. si je presse mon BackButton l'empilement est le suivant:

(2): OnPause(), onStop(), OnDestroy()

(1): onStop(), OnDestroy() [sic]

(1): onCreate(), onStart(), onResume()

Je ne vois aucune raison, d'abord pourquoi (1) doit effectuer onStop et OnDestroy(), à recréent à nouveau, et la deuxième raison pour laquelle onRestart n'obtient appelé (1).

Est-ce que quelqu'un a Raison pour ce comportement? Puis-je annuler les appels à onStop() ou onDestroy() d'une manière ou d'une autre? une idée apreciated

+0

vérifier ce ........... http://developer.android .com/référence/android/app/Activité.html http://www.technicaljar.com/?p=517 http://androidapps.org.ua/i_sect11_d1e703.html –

Répondre

4

Essayez d'utiliser FLAG_ACTIVITY_SINGLE_TOP lors du démarrage de l'activité enfant, comme:

Window window = getLocalActivityManager().startActivity(id, 
      intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)); 

Plus d'infos ici:

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_SINGLE_TOP

+0

le problème ici est: il fonctionne comme aspected: crée FIRST_ACTIVITY -> puis commence SECOND, comme ci-dessus, onBack il appelle seulement surResume de FIRST. Mais si je veux redémarrer SECOND, RIEN ne sera appelé là-bas –

0

lorsque vous appuyez sur le bouton de retour, le comportement par défaut est d'arrêter ou de détruire l'activité en cours, vous pouvez remplacer le bouton de retour. Si vous appuyez sur le bouton home, il utilisera le onPause() ce qui signifie que vous considérerez que vous voulez continuer avec l'activité en cours lorsque vous relancez la même activité mais si vous appuyez sur le bouton précédent, cela signifie que vous terminez votre activité dernière activité

+0

Je pense que vous vous méprenez: Il est absolument clair que SECONDE activité détruit onBackPressed, mais pourquoi est-ce le premier Activité aussi ?? –

+0

Je pense que si nous commençons en tant que nouvelle activité il va le détruire mais si nous commençons l'activité pour le résultat alors – Pratik

0

Onstop() et onDestroy() n'appellera pas jusqu'à ce que vous n'ayez pas terminé l'activité. Ondestory() appelé pour la libération de la ressource occupée par activité. Si l'utilisation de l'activité IF a été terminée, il est préférable de détruire cette activité.

Deuxièmement, il sera bon pour le schéma de gestion de la mémoire. et si vous ne l'appelez pas détruit alors il appellera automatiquement lorsque vous quittez l'application

et enfin si vous doesnot voulez appeler détruire lorsque vous appuyez sur le bouton Retour, vous pouvez utiliser la méthode de remplacement onBackpressed()

0

Vous peut éviter la méthode d'activité OnDestroy lorsque le bouton de retour enfoncé de manière très simple,

Il suffit de mentionner

android:persistent="true" 

pour vos activi ty, qui devrait empêcher votre activité se détruire, Pour en savoir plus en détail, vous pouvez visiter le poste ci-dessous SO

Prevent activity from being destroyed as long as possible

Questions connexes