2013-03-22 21 views
56

Ich versuche, eine 'Abmelden' Funktion innerhalb meiner Anwendung zu erstellen. Grundsätzlich sollten die Anwendungsdaten durch Abmelden gelöscht werden. Ich möchte nach dem Abmelden die Anwendung neu starten, damit Anmeldeinformationen usw. erneut eingegeben werden können. Das Problem, das ich habe ist, dass zum Zeitpunkt, an dem der Benutzer auf "Abmelden" klickt, die Anwendung bereits 3-4 Aktivitäten ausgeführt hat und ich nicht sicher bin, wie ich durch sie zurückgehen soll. Wie simuliere ich einen Neustart der App?So starten Sie eine Android-Anwendung programmgesteuert

+1

für den Neustart, wie Sie Ihre Anwendungsdaten speichern Sie ? –

+0

In einer lokalen Datenbank sowie JSON-Dateien. Ich habe geschafft, die Daten erfolgreich zu löschen – Ryan

+0

Überprüfen Sie diese Frage/Antwort http://stackoverflow.com/questions/2470870/force-application-to-restart-on-first-activity-android – Zelldon

Antwort

154

versuchen Sie die folgenden Zeilen mit der Anwendung

Intent i = getBaseContext().getPackageManager() 
      .getLaunchIntentForPackage(getBaseContext().getPackageName()); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(i); 
+1

Dies scheint zu funktionieren, ich werde noch einige Tests durchführen und bestätigen – Ryan

+1

Die Login-Seite Aktivität muss bereits im Stapel sein, damit dies funktioniert. Dies funktioniert nur, wenn der Benutzer die Anmeldeseite öffnet, einige Aktivitäten öffnet und auf die Schaltfläche zum Abmelden klickt. Sobald der Benutzer eingeloggt ist, öffnet er die Anmeldeseite nicht und er befindet sich nicht im Stapel. So funktioniert das nicht – Sathesh

+37

Soweit ich sagen kann, wird dies die Anwendung von Anfang an neu starten, aber es wird ** nicht ** die Anwendung neu initialisieren. Somit behalten statische Klassenvariablen und dergleichen ihren Wert von einem vorherigen Lauf bei. Ein vollständiger Neustart benötigt zuerst die App zu 'System.exit (0)'. http://stackoverflow.com/questions/6609414/howto-programatically-restart-android-app –

26

Kasse Absicht Eigenschaften wie keine Geschichte, klar zurück stapeln etc ... Intent.setFlags

Intent mStartActivity = new Intent(HomeActivity.this, SplashScreen.class); 
int mPendingIntentId = 123456; 
PendingIntent mPendingIntent = PendingIntent.getActivity(HomeActivity.this, mPendingIntentId, mStartActivity, 
PendingIntent.FLAG_CANCEL_CURRENT); 
AlarmManager mgr = (AlarmManager) HomeActivity.this.getSystemService(Context.ALARM_SERVICE); 
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 100, mPendingIntent); 
System.exit(0); 
+0

Arbeitslösung –

+0

Funktioniert der gleiche Code auch für Nougat? – Tejas

Verwandte Themen