2010-01-14 9 views
13

Powiedzmy, że uruchamiam swoją aplikację na ekranie głównym, przechodzę przez niektóre czynności, a następnie naciskam klawisz główny i robię coś innego w aplikacji Gmail.Przywróć stos aplikacji na Androida z tła

Po zakończeniu sprawdzania poczty, ponownie naciska klawisz domowy, aby opuścić aplikację Gmail i ponownie kliknąć ikonę mojej aplikacji na ekranie głównym, aby do niej wrócić.

Po powrocie do aplikacji chcę, aby powróciła do ostatniej aktywności, w której byłem, NIE rozpoczynam nowej sesji. Próbowałem to rozgryźć przez cały dzień.

Mój manifest dla mojej pierwszej czynności jest następująca:

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

kategoria przypisują LAUNCHER sprawia, że ​​moja aplikacja zawsze zaczynają się na głównej działalności, więc nie wiem, jak go o przywrócenie ostatnią aktywność. Ludzie powiedzieli mi, żebym użył sharedpreferences, aby zapisać ostatnią aktywność i załadować ją na Launch, ale nie sądzę, że ma to być zrobione w ten sposób, ponieważ nie jest zbyt elegancka.

+0

Twój manifest wygląda dobrze; powinno działać zgodnie z oczekiwaniami. Jest szansa, że ​​widzisz to tylko pod debuggerem, jak to praktycznie identyczne pytanie? http://stackoverflow.com/questions/2061143/android-keep-tasks-activity-stack-after-restart-from-home/2061447 –

+5

Wyjaśniałem to tak jak dostałem twoją odpowiedź, to nie było związane z debugowaniem zaćmień ale było to związane z konfiguracją uruchamiania: ustawiłem akcję uruchamiania na: Uruchomienie domyślnej aktywności na karcie Android. Zmieniłem to na "Do Nothing" i to wystarczyło. nie mogę uwierzyć, że tak długo to zrozumiałem! dzięki – jlim

+0

Ah ha, również dobrze wiedzieć! –

Odpowiedz

0

Spróbuj użyć jednego z nich w swoim manifeście:

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

Myślę, że jego jedyny sposób, ponieważ to, co się dzieje, kiedy uruchomienie aplikacji jest to, że aplikacja wysyła Launcher zamiaru „android.intent.action.MAIN "A jedyną czynnością w twojej aplikacji, która reaguje na tę intencję, jest twoja główna działalność, dzięki czemu aktywuje się. Jedyne, co możesz zrobić, to zapisać gdzieś swoją sesję i rozpoczęcie działalności, jeśli jest już zapisana sesja przywracania aplikacji do poprzedniego stanu.

0

Czy funkcje onResume() i onPause zostały właściwie zastosowane?

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

protected void onPause() { 
    super.onPause(); 
} 
Powiązane problemy