2010-01-14 13 views
13

Diciamo che lancio la mia app dalla schermata principale, navigo tra alcune attività, poi premo il tasto Home e faccio qualcos'altro nell'app Gmail.Ripristina stack di app Android da sfondo

Dopo aver controllato la posta, premo di nuovo il tasto Home per uscire dall'app Gmail e faccio di nuovo clic sull'icona della mia app nella schermata iniziale per tornare ad essa.

Quando torno alla mia app, voglio che torni all'ultima attività in cui ero, NON inizi una sessione completamente nuova. Ho cercato di capirlo tutto il giorno.

mio manifesto per la mia prima attività è la seguente:

<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 categoria attribuiscono LANCIAGRANATE rende la mia app sempre iniziare a Principali settori di attività, in modo da non so come fare per ripristinare l'ultima attività. Le persone mi hanno detto di usare sharedpreferences per salvare l'ultima attività e caricarla su Launch, ma non penso che sia pensata per essere eseguita in quel modo perché non è molto elegante.

+0

Il file manifest sembra corretto; dovrebbe funzionare come ci si aspetta. Qualche possibilità che stai vedendo solo sotto il debugger, come questa domanda praticamente identica? http://stackoverflow.com/questions/2061143/android-keep-tasks-activity-stack-after-restart-from-home/2061447 –

+5

l'ho capito proprio come ho avuto la tua risposta, non era eclipse debug related ma era collegato alla configurazione di esecuzione: avevo l'azione di avvio impostata su: Avvia attività di default nella scheda Android. L'ho modificato in "Non fare nulla" e ha funzionato. non posso credere di aver impiegato così tanto tempo per rendermene conto! grazie – jlim

+0

Ah ah, anche buono a sapersi! –

risposta

0

Provare a utilizzare uno di questi nel vostro manifesto:

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

penso che il suo l'unico modo perché quello che succede quando si sta lanciando un app è che l'applicazione Launcher invia intenti "android.intent.action.MAIN "E l'unica attività nella tua app che risponde a questo intento è la tua attività principale, quindi viene attivata. Quindi l'unica cosa che puoi fare è salvare da qualche parte la tua sessione e all'avvio dell'attività se c'è già una sessione salvata ripristina l'app allo stato precedente.

0

Are onResume() e onPause sono stati implementati correttamente?

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

protected void onPause() { 
    super.onPause(); 
} 
Problemi correlati