2011-11-04 7 views
7

Se l'attività A è correlata all'attività T1 e l'attività B è correlata all'attività T2, come posso terminare l'attività A dall'attività B?Come terminare un'attività da un'altra attività

Ho bisogno di questo perché la mia applicazione può essere avviata dal suo collegamento o attraverso le notifiche.

+0

Entrambe le attività fanno parte della stessa applicazione? – FoamyGuy

+0

sì. l'attività a è stata avviata normalmente e l'attività B è stata avviata quando l'app era in background attraverso le notifiche –

+0

Direi di usare un [servizio] (http://developer.android.com/guide/topics/fundamentals/services.html), non l'ho guardato molto ma potrebbe esserti utile. – user999717

risposta

0

io non sono sicuro di quello che sarebbe il miglior approccio, ma un approccio potrebbe essere quello di passare attività A ad un Singleton e prenderlo da B e fare una finitura() su di esso ...

+0

vedere il mio commento sopra –

+0

È possibile rimuovere il riferimento da onStop o qualcosa di simile ... – Warpzit

3

Mentre altri gli approcci potrebbero funzionare, quello che sembra il più diretto per me è inviare un intento all'altra attività che gli dice di finire. Quell'attività, dopo aver ricevuto quell'intenzione, chiama finish().

+0

Se lo stavo facendo, vorrei andare con qualcosa di simile. – FoamyGuy

+0

Non è consentito mantenere i riferimenti alle attività nelle applicazioni perché il sistema operativo non ucciderà quell'attività mentre ha un riferimento. –

+0

Questo è diverso. Rispetto al mio suggerimento, ma funzionerà solo se l'attività avviata dall'intenzione è la stessa dell'attività in esecuzione e non una nuova. Non so come funzioni quando lo chiami con intenti quindi non posso rispondere senza fare test. Spero che abbia senso ... – Warpzit

1

Un'altra alternativa potrebbe essere quella di richiamare l'attività B con il flag superiore trasparente dal gestore delle notifiche, ad es.

Intent intent = new Intent(context, HomeActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  
context.startActivity(intent); 

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP

Se impostato, e l'attività in fase di lancio è già in esecuzione nel compito corrente, quindi invece di lanciare una nuova istanza di tale attività, tutte le altre attività su di esso sarà chiuso e questo Intento sarà consegnato alla vecchia attività (ora in cima) come un nuovo Intento.

+0

cancella tutte le attività solo da quella attività e non influenza le attività di un'altra attività –

2

Avevo bisogno delle stesse informazioni e mi sono divertito con quello che ho detto qui.

Intent intent = new Intent(MainActivity.this,HighScoresActivity.class); 
         intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
         startActivity(intent); 

Modificare le attività in base alle proprie esigenze, ma il FLAG_ACTIVITY_CLEAR_TOP rimuove le altre attività dalla pila.

Problemi correlati