2010-01-14 5 views
13

Disons que je lance mon application à partir de l'écran d'accueil, naviguer à travers certaines activités, puis j'appuie sur la touche d'accueil et faire autre chose dans l'application Gmail.Restaurer la pile app Android à partir de l'arrière-plan

Après avoir vérifié mon courrier, j'appuie à nouveau sur la touche d'accueil pour quitter l'application Gmail et cliquer à nouveau sur l'icône de mon application sur l'écran d'accueil pour y revenir.

Lorsque je reviens sur mon application, je souhaite qu'elle revienne à la dernière activité à laquelle je me trouvais, et ne démarre PAS une toute nouvelle session. J'ai essayé de comprendre cela toute la journée.

Mon manifeste pour ma première activité est la suivante:

<activity android:name=".Main" 
       android:label="@string/app_name" 
       android:screenOrientation="portrait" 
       android:alwaysRetainTaskState="true"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

La catégorie d'attribut LANCEUR fait mon application commence toujours à l'activité principale, donc je ne sais pas comment s'y prendre pour restaurer la dernière activité. Les gens m'ont dit d'utiliser les préférences partagées pour sauvegarder la dernière activité et la charger au lancement, mais je ne pense pas que ce soit fait de cette façon parce que ce n'est pas très élégant.

+0

Votre manifeste semble correct; Cela devrait fonctionner comme prévu. Y a-t-il une chance que vous voyiez cela uniquement sous le débogueur, comme cette question pratiquement identique? http://stackoverflow.com/questions/2061143/android-keep-tasks-activity-stack-after-restart-from-home/2061447 –

+5

Je l'ai compris juste comme j'ai eu votre réponse, ce n'était pas le débogage d'eclipse mais il était plutôt lié à la configuration d'exécution: l'action de lancement était définie sur: Lancer l'activité par défaut sous l'onglet Android. Je l'ai changé pour "Ne rien faire" et il a fait l'affaire. Je ne peux pas croire que j'ai pris si longtemps pour réaliser cela! merci – jlim

+0

Ah ha, aussi bon à savoir! –

Répondre

0

Essayez d'utiliser l'un de ceux-ci dans votre manifeste:

<activity android:launchMode=["multiple" | "singleTop" | 
           "singleTask" | "singleInstance"] ... 
1

Je pense que la seule façon parce que ce qui se passe quand vous lancez une application est que l'application de lancement envoie l'intention « android.intent.action.MAIN "Et la seule activité de votre application qui répond à cette intention est votre activité principale, elle est donc activée. Donc, la seule chose que vous pouvez faire est de sauvegarder quelque part votre session et le démarrage de l'activité s'il y a déjà une session sauvegardée restaurer l'application à l'état précédent.

0

Les fonctions onResume() et onPause sont-elles implémentées correctement?

protected void onResume(){ 
    super.onResume(); 
} 

protected void onPause() { 
    super.onPause(); 
} 
Questions connexes