2010-01-13 3 views
9

Mon application a deux activités, que je commence dans cet ordre:Android: garder la pile d'activité de la tâche après le redémarrage de HOME

HOME > A > B 

Maintenant, j'appuyez sur HOME et le lancement « A » à nouveau. Je voudrais voir l'activité "B" sur un sommet de "A", mais à la place je reçois "A" - ainsi la pile d'activité est effacée.

Manifest:

<activity android:name=".activity.A" android:label="A" android:alwaysRetainTaskState="true"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

<activity android:name=".activity.B" android:label="B"> 
    <intent-filter> 
    </intent-filter> 
</activity> 

Que dois-je faire?

+0

Êtes-vous sûr que vous obtenez A et non B, ou votre 'android: label' pour' .activity.B' est-il une faute de frappe dans la question? –

+0

Ah, ceci est une faute de frappe pour l'étiquette .activity.B (juste corrigé). Je vois toujours A attendez B. – alex2k8

+1

ce que vous voulez est le comportement standard, donc peut-être il y a une petite faute de frappe ou un autre bug ailleurs. essayez de "quitter" complètement l'application avant de la tester, c'est-à-dire lancez-la et appuyez de nouveau jusqu'à ce que la pile soit claire, puis relancez-la? – James

Répondre

10

je me suis dit ce qui est faux ...

La config est juste, mais j'ai commencé l'application pour le débogage d'Eclipse, ce fut la question.

Cas # 1.

Debug > A > B > HOME > A 
Get: A (stack is cleared) 

Cas n ° 2.

Debug > A > BACK > A > B > HOME > A 
Get: B (stack preserved) 

Cas n ° 3.

A > B > HOME > A 
Get: B (stack preserved) 
+0

Ahh, intéressant! Il y a eu beaucoup de questions comme celle-ci au cours des deux derniers jours, alors peut-être que c'est la réponse pour certains d'entre eux :) –

+0

Notez que ce comportement a été corrigé dans la version 0.9.6 du plugin ADT pour Eclipse. Vous pouvez désormais lancer vos applications depuis Eclipse et obtenir le même comportement que sur un appareil. –

+0

Merci pour cette information, Christopher! – alex2k8

2

Nous avons découvert c'est une question Android connue - il a été officiellement suivi here et here.

Malgré qu'ils disent (n'a pas vérifié) il a été corrigé dans la version 0.9.6 du plugin ADT Eclipse je peux toujours le voir sur un périphérique réel lors de la mise à niveau de l'application OTA. Au moins cela se produit pour Android 1.6, 2.0.1, 2.1 et 2.2.

Nous avons créé une solution de contournement pour ce problème. Vérifiez-le here.

1

Ce n'est pas si complexe. Vous avez juste besoin de manipuler le manifeste.

AndroidManifest.xm

<activity 
    android:name=".MainActivity" 
    android:alwaysRetainTaskState="true" 
    android:exported="true" 
    . 
    . 
    . 

Lire sur le 'android: exporté' & 'android: alwaysRetainTaskState' ici:

android:exported

android:alwaysRetainTaskState

Questions connexes