2013-11-26 2 views
14

La mia applicazione ha il seguente flussocome terminare tutte le attività e chiudere l'applicazione in Android?

Casa-> schermo 1-> schermo 2-> schermo 3-> 4- schermo> schermo 5> Casa-> schermo 2-> Casa-> Schermo 3

Il mio problema è che quando sto cercando di chiudere l'applicazione, l'attività Home si apre ogni volta che sto cercando di chiudere l'applicazione.

Desidero solo chiudere l'applicazione quando l'utente preme il tasto Indietro del dispositivo sulla schermata iniziale.

+0

vedere questo: http://stackoverflow.com/questions/4758462/android-finish-all-activities – Avijit

risposta

52

c'è finishAffinity il metodo(), che si concluderà l'attività in corso e tutte le attività principali, ma funziona solo in Android 4.1 o superiore

+2

Quello era un salvavita ...! – GAMA

0

Aggiungi android:noHistory="true" nel file manifest dell'attività.

+0

Scommetto che vuole tornare alla schermata precedente quando preme indietro, ma chiudili solo quando è nella schermata Home . –

0

Ci sono 2 modi per risolvere il tuo problema

1) Rivestimento chiamata() dopo startActivity (intenti) in ogni attività

2) set android: launchMode = "SingleInstance" in ogni tag nel file di menifest

penso secondo modo è quello migliore per risolvere il problema, ma si può anche usare primo modo

2

Questo funziona bene per me in tutte le versioni. Chiudere tutte le precedenti attività come segue:

Intent intent = new Intent(this, HomeActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // this will clear all the stack 
intent.putExtra("Exit me", true); 
startActivity(intent); 
finish(); 

Poi nel HomeActivity onCreate() metodo di aggiungere questo per finire il MainActivity

setContentView(R.layout.main_layout); 

if(getIntent().getBooleanExtra("Exit me", false)){ 
    finish(); 
    return; // add this to prevent from doing unnecessary stuffs 
} 
10

Questo metodo funziona bene per me.

  • Si dovrebbe utilizzare FLAG_ACTIVITY_CLEAR_TASK e FLAG_ACTIVITY_NEW_TASK bandiere.

    Intent intent = new Intent(SecondActivity.this, CloseActivity.class); 
    //Clear all activities and start new task 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent); 
    
  • onCreate() metodo CloseActivity attività.

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        finish(); // Exit 
    } 
    
+0

intent.setFlags (Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); ha funzionato per me –

0
public void onBackPressed() { 
    super.onBackPressed(); 
    finishAffinity(); 
    System.exit(0); 
} 

può essere questo metodo è migliore utilizzo per chiudere tutte le attività e la memoria dispositivo pulito.

0

Per cancellare tutte le attività durante l'apertura di uno nuovo quindi effettuare le seguenti operazioni:

Intent intent = new Intent(getApplicationContext(), YourActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 
0

Qualche finish() non funziona

ho risolto il problema con

Non finishAffinity()

utilizzare

System.exit(0); 

Finirà l'app senza annimazione.