2013-02-08 7 views
6

Es kann viele Aktivitäten in der Anwendung und die zuletzt gestartete Aktivität bleiben oben auf Stapel und beim Zurückdrücken beenden Sie die aktuelle Aktivität. Ich habe eine Sequenz von Aktivität und hier ist der Fluss ..Beenden alle Instanz einer bestimmten Aktivität

wenn wir haben A, B, C (1), D, C (2) ... Activity C (1) und C (2) sind zwei unterschiedliche Instanz Activity C gestartet, während der Anwendung zu navigieren Also, was erforderlich ist, ist alle Instanz der Aktivität C zu löschen und das Ergebnis sollte sein, wenn ich fertig bin C (2) Ich sollte mit diesen Stapel A, B, D verlassen haben. Was soll ich machen .

IMP -Ich will die C (1) am Leben in Stapeln halten, bis es sei denn, ich beende die C (2) wie ich eher C mit New Task-Flag begonnen haben könnte, als diese Instanzen zu schaffen, aber diese Instanz haben unterschiedliche Benutzeroberfläche und Arbeit.

Die folgenden Ansätze sind nicht günstig.

Erste

@Override 
public void onBackPressed(){ 
    super.onBackPressed(); 
    Intent intent = new Intent(C(2).this , D.class);  
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)); 
    startActivity(intent); 
} 

Diese

Zweite

All die Aktivität von Stapel und Relaunch Aktivität löschen wird die Spur von Aktivität in Singletonklasse halten und dann den erforderlichen Durchfluss Neubelebung Wie auch immer, dies wird die Zeit verbrauchen, wenn viele Aktivitäten gestartet werden müssen. So

Ich dachte, dass es eine Lösung sein, mit Paket-Manager oder andere, die das Problem lösen wird, Lösung

+0

Haben Sie eine finden Weg, dies zu tun? – Uma

Antwort

1

geschätzt werden, weiß ich nicht einen Weg Aktivität C1 manuell zu schließen, wenn die Aktivität C2 beenden.

Sie können aber Aktivitäts C1 kümmern in es auf diese Weise bei der Wiederaufnahme ist -

1 - Legen Sie eine Flagge in Ihrer Anwendungsklasse:

public static boolean IsClosingActivities = false; 

Dieser Wert kann „true“ von C2 eingestellt werden kurz vor "Ende" der Aktivität C2 auftritt.

Setzen Sie "false" an dem Punkt, an dem Sie startActivity für eine neue Aktivität C aufrufen. (Vorausgesetzt, dass neue Instanzen von Aktivität C später in der Anwendung erstellt werden können).

2 - C Implementierung auf Lebenslauf:

@Override 
    protected void onResume() {  
     super.onResume(); 
     if (YourApplication.IsClosingActivities) { 
       this.finish(); 
     } 
    } 

auf diese Weise - wenn der Benutzer von D navigiert zurück - C1 wird selbst beenden und er wird nach B navigieren

+0

Ich werde es versuchen und lassen Sie es wissen .. –

+0

Ich hatte ähnliche Situation, und es manuell zu tun war der einzige Weg, den ich gefunden habe. Sie können die Antwort in http: // stackoverflow sehen.com/questions/14499034/how-to-end-a-Aktivität-und-Rückkehr zu einem abwechslungsreichen Ort - akzeptieren Sie die Antwort, wenn es für Sie funktioniert :) –

+1

Hat es funktioniert? wenn ja - als Antwort markieren. –