2010-01-13 16 views
9

Moja aplikacja ma dwa działania, że ​​zacznę w tej kolejności:Android: zachować aktywność stos zadanie po restarcie od HOME

HOME > A > B 

Teraz naciśnij HOME i uruchomienie ponownie „A”. Chciałbym zobaczyć aktywność "B" na górze "A", ale zamiast tego otrzymuję "A" - więc stos działań jest wyczyszczony.

Oczywisty:

<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> 

Co należy zrobić?

+0

Czy na pewno dostajesz A, a nie B, czy też jest twoim 'android: label' dla' .activity.B' literówka w pytaniu? –

+0

Ah, to jest literówka na etykiecie .activity.B (tylko naprawione). Wciąż widzę A oczekując B. – alex2k8

+1

, czego chcesz, to standardowe zachowanie, więc być może jest jakiś mały literówka lub błąd w innym miejscu. spróbuj "wyjść" z aplikacji całkowicie przed przetestowaniem tego, to jest uruchomienie i naciśnij wstecz, aż stos jest czysty, a następnie ponownie uruchomić? – James

Odpowiedz

10

zorientowali się, co jest nie tak ...

config ma rację, ale zacząłem aplikacji do debugowania z Eclipse, to był problem.

Case # 1.

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

Case # 2.

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

Case # 3.

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

Ahh, ciekawe! Było wiele takich pytań w ciągu ostatnich dni lub dwóch, więc może jest to odpowiedź dla niektórych z nich :) –

+0

Należy zauważyć, że to zachowanie zostało naprawione w wersji 0.9.6 wtyczki ADT dla Eclipse. Możesz teraz z przyjemnością uruchamiać swoje aplikacje z Eclipse i uzyskać takie samo zachowanie jak na urządzeniu. –

+0

Dziękuję za te informacje, Christopher! – alex2k8

2

Odkryliśmy, że jest to znany problem Android - została oficjalnie śledzone here i here.

Mimo, że mówią (nie sprawdzono) zostało to naprawione w wersji 0.9.6 wtyczki ADT Eclipse, nadal widzę to na prawdziwym urządzeniu podczas aktualizacji OTA aplikacji. Przynajmniej tak się dzieje w przypadku Androida 1.6, 2.0.1, 2.1 i 2.2.

Opracowaliśmy obejście tego problemu. Sprawdź to here.

1

To nie jest takie skomplikowane. Po prostu musisz manipulować manifestem.

AndroidManifest.xm

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

Przeczytaj o 'android: eksportowanego' & 'android: alwaysRetainTaskState' tutaj:

android:exported

android:alwaysRetainTaskState

Powiązane problemy