2013-01-02 8 views
6

nella mia applicazione, quando avvio un'attività specifica voglio che tutte le attività nello stesso pacchetto vengano cancellate dalla pila sottostante. Qualcuno potrebbe aiutarmi su come farlo? Anche io non voglio usare android:noHistory="true" nel manifest perché voglio solo cancellare la cronologia dello stack all'avvio di questa attività specifica.Come cancellare lo stack di attività al di sotto di un'attività

EDIT:

Per rendere il mio punto più chiaro, supponiamo di avere l'attività a. Da un inizio attività b. Da b inizio c. Ma quando inizio c voglio cancellare b e a.

+1

per ogni attività di riciclaggio è possibile utilizzare finish() dopo ogni passaggio di intenti. e il secondo modo è FLAG_ACTIVITY_CLEAR_TOP, FLAG_ACTIVITY_NEW_TASK e poi puoi anche usare intent.addFlags (Intent.FLAG_ACTIVITY_NO_HISTORY. Spero che questo ti sia d'aiuto. – itsrajesh4uguys

+0

Mi dispiace ma se leggi la domanda più da vicino osserverai che ho detto che voglio la cronologia dello stack deve essere cancellata all'avvio ** di questa attività specifica, non di altre attività.Quindi, se termino tutte le attività in pausa, non sarà lì quando voglio. Non voglio che lo stack per essere presente all'avvio dell'attività specifica che ho menzionato perché è un'attività trasparente: –

+0

per quell'uso Intent.FLAG_ACTIVITY_NO_HISTORY prima di chiamare l'attività specifica desiderata – itsrajesh4uguys

risposta

4

Oh ragazzi, ho capito che basta inserire il seguente codice con l'intento che inizia l'attività dello stack di compensazione:

Intent i = new Intent(this,MyActivity.class); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(i); 

Grazie per il tuo aiuto.

+0

Questo è esattamente quello che ho menzionato nella mia risposta. Sono contento che l'abbia trovato lo stesso. –

+2

Mi dispiace ma la mia risposta ha i.addFlags (Intent.FLAG_ACTIVITY_CLEAR_TASK) non Intent.FLAG_ACTIVITY_CLEAR_TOP. Grazie per il tuo impegno però. –

1

Prova questo,

Aggiungere android:launchMode="singleTop" alla vostra attività specifica che voleva per cancellare tutte le attività impilata.

Quindi utilizzare intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) e intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) all'avvio dell'attività specifica.

Fonte: Android: Clear the back stack

+0

No, non è questo il Ho modificato la risposta per rendere più chiara la mia domanda: –

1
Intent intent = new Intent(getApplicationContext(), YOUR_CLASS.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 
+0

Nessuna attività di compensazione deve essere nella parte inferiore del impilare per questo. Voglio che sia al top. –

+0

Ho modificato la mia domanda per renderla più chiara. –

1

Set bandiera prima di avviare l'attività di ... che cosa è il punto di impostando il flag dopo aver iniziato l'attività .... il codice dovrebbe essere simile a questo,

Intent intent = new Intent(getContext(), ClassName.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    v.getRootView().getContext().startActivity(intent); 

    removeSessionFiles(); 
+0

V tende a Visualizza classe – Puneet

+0

In realtà questo codice non è in un metodo onClick. È in un metodo onReceive di BroadcastReceiver in un servizio. –

+1

Potrebbe essere possibile provare qualcosa del genere Supponiamo nella nostra applicazione, abbiamo un numero di attività (ad esempio dieci) e dobbiamo uscire direttamente da questa attività. Quello che possiamo fare è creare un intent e andare all'attività root e impostare flag nell'intento come 'intent.setFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP); anche aggiungere un extra come booleano allo scopo intento.putExtra ("EXIT", true); Poi nell'attività principale, controllare il valore della booleano e in base a tale fine chiamata(), nella onCreate() della attività delle radici se (getIntent(). GetBooleanExtra ("EXIT", false)) { finire(); } ' – Puneet

Problemi correlati