2010-01-25 14 views
15

Ich habe eine Anwendung mit zwei Aktivitäten, LogonAct und MainAct. LogonAct ist eine Anmeldeaktivität, die der Benutzer bei jeder Rückkehr zur Anwendung erzwingen soll. Ich habe android: clearTaskOnLaunch = "true" auf LogonAct gesetzt.Wie wird der Stack wieder zur Root-Aktivität zurückgesetzt, wenn der Benutzer die Anwendung verlässt?

Wenn ich mich durch diese Abfolge von Bildschirmen gehen zuerst die App starten,

Home -> LogonAct -> MainAct -> Home

ich diese Sequenz dann folgen,

LogonAct -> Back -> MainAct

Warum es mich zurück zu MainAct bringen ? Sollte diese Aktivität nicht geschlossen worden sein, da LogonAct android: clearTaskOnLaunch = "true" hat. Ich habe erwartet, dass ich zurück nach Home gebracht werde, wenn ich den Zurück-Button von LogonAct drücke.

Relevante Auszüge aus AndroidManifest.xml,

<activity android:name=".LogonAct" 
      android:clearTaskOnLaunch="true"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER"/> 
     </intent-filter> 
    </activity> 

    <activity android:name=".MainAct"> 
     <meta-data android:name="android.app.default_searchable" 
        android:value=".SearchResults" /> 
    </activity> 

I 1.5 mit bin.

Jede Hilfe wird geschätzt.

+0

Können Sie bearbeiten Ihre Frage zu verankern und Fügen Sie Ihr Manifest oder zumindest das Element für "LogonAct" hinzu, da dies den Leuten helfen würde zu erkennen, ob ein Fehler darin besteht. –

+0

Snippets von AndroidManifest.xml enthalten Dave. Ich hätte sie in die Frage einfügen sollen, aber ich hatte den Code nicht vor mir. – Adrian

Antwort

11

Die Dokumente für android:clearTaskOnLaunch erwähnen, dass dieses Attribut "immer dann gilt, wenn [die Aktivität] vom Startbildschirm neu gestartet wird".

jedoch Sie in Ihrem Fall sind Drücken der Startseite Taste, um zum Startbildschirm zurückzukehren, anstatt die Zurück Taste drücken. Dies bedeutet, dass Ihre Anwendung nicht wirklich Relaunched ist, weil die MainAct nicht "fertig" war. Das passiert nur, wenn Sie Zurück drücken (oder wenn Android die Aufgabe zum Speichern von Ressourcen usw. beendet).

Wie Sie nur zwei Tätigkeiten in Ihrer Anwendung haben, können Sie das Attribut android:noHistory auf MainAct gesetzt, wodurch sichergestellt wird, dass Benutzer nie zu ihm zurückkehren können und durch die LogonAct passieren muss.

Nebenbei bemerkt, es scheint ein bisschen nervig, Benutzer zu zwingen, sich jedes Mal neu zu loggen, wenn sie von der App weg navigieren (zum Beispiel wenn sie einen Anruf erhalten).
Sie könnten ein Sitzungstoken mit Zeitüberschreitung im permanenten Speicher Ihrer App behalten oder eine Netzwerkverbindung mit einem Dienst offen halten, wenn Ihre App so funktioniert —, aber das liegt natürlich an Ihnen und Ihren Anforderungen. :)

+1

Danke für Ihre Hilfe Christopher. Ich habe ein paar weitere Aktivitäten, die nach MainAct kommen können, also wenn ich android: noHistory auf MainAct verwende, fallen diese anderen Aktivitäten auf den Anmeldebildschirm zurück, wenn ich Zurück auswähle. Ich stimme zu, dass die Anmeldung bei jedem Besuch der App nicht ideal ist. Es ist eine Passwort-Manager-App, also wollte ich sie nicht zu lange zugänglich lassen. Ich werde versuchen, einen Timer zu verwenden, der ähnlich wie Sudo funktioniert, d. H. Das Passwort abfragen, wenn es mehr als x Sekunden seit der letzten Eingabe vergangen ist. – Adrian

+3

Ah. In diesem Fall können Sie in 'onResume()' jeder 'Aktivität' einen schnellen Methodenaufruf hinzufügen, der prüft, ob ein bestimmter Zeitraum verstrichen ist. Wenn ja, dann rufe 'finish()' auf und feuere einen 'Intent', um sie zurück zum' LogonAct' zu schicken. –

15

Sie können folgendes tun:
1. Satz clearTaskOnLaunch = "true" in AndroidManifest, in Erklärung Haupttätigkeit
2.in Tätigkeit, die in der Nähe sind:

@Override 
public void onBackPressed(){ 
    moveTaskToBack(true); 
} 

so, wenn der Benutzer drückt wieder - es kommt wieder zu Homescreen wenn Benutzer aplication wieder startet - Aufgabe Stapel löscht und er kommt Haupttätigkeit

+0

Danke muzhig Deine Beschreibung hilf mir viel. – amity

+0

danke muzhig..it hat mir geholfen ... –

Verwandte Themen