2016-07-14 32 views
2

Ich bin ziemlich neu in Android und zur Zeit lief ich ein Problem in Bezug auf Login und Abmeldung eines Benutzers. Ich habe diese Aktivitäten:Anwendungslebenszyklus, Einstellen eines Timers, um den Benutzer abzumelden

  • Splash Aktivität
  • Karte Aktivität
  • Transaktionen Aktivität
  • Einstellungen Aktivität

Die Idee ist, dass, wenn ein Benutzer auf Transaktionen geht eine Anmeldung angefordert wird. Nachdem der Benutzer eingeloggt ist, bleibt er eingeloggt, während er die App benutzt. Auch wenn er auf einer Seite bleibt und für mehrere Minuten nichts tut. Wenn die App gesperrt oder geschlossen wird, wird der Benutzer nach 60 Sekunden abgemeldet. Wenn er rechtzeitig zurückkommt, bleibt er eingeloggt, sonst wird ein neues Login-Formular angezeigt.

Also habe ich darüber nachgedacht, wie man das löst. Meine ersten Gedanken waren, einen Timer zu setzen, wenn die App gesperrt/geschlossen ist. Wenn der Benutzer zurückkommt, wird der Timer überprüft. Wenn nach 60 Sekunden die Benutzerdetails (im Speicher) weggeworfen werden.

Ich denke, es hat etwas mit dem Anwendungslebenszyklus zu tun, vielleicht eine statische Variable. Aber ich weiß nicht, wo ich anfangen soll.

Hat jemand eine Lösung oder einen Tipp, damit ich dieses Ding beenden kann ?? Wäre sehr willkommen

Antwort

0

Verwenden Sie in diesem Fall gemeinsame Präferenz Beachten Sie die aktuelle Zeit, wenn die App geschlossen und neu starten die App vergleichen die aktuelle Zeit mit der Nachspielzeit vergleichen und dann den Unterschied in der Zeit finden. Wenn es größer als Ihre Nachfrage ist, dann Anmeldeseite anfordern. Wenn Sie Beispielcode für Zeitunterschied möchten, kann ich meinen Beitrag bearbeiten

+0

Ja, das funktionieren würde. Einzige Sache ist, ich weiß nicht, wie man einen Scheck macht, wenn die App geschlossen ist. Ondestroy wird nicht funktionieren, da ich mehr Aktivitäten habe. Haben Sie ein Beispiel für diesen On-Access-Check? – Aad

+0

Schreiben Sie einfach Ihren Code in die OnStop-Methode und überschreiben Sie ihn. Beachten Sie den Zeitstempel in dieser Methode und wenn die App neu startet dann berechnen Sie den Zeitunterschied –

+0

Aber der OnStop wird auch ausgelöst, wenn der Benutzer zu einer anderen Seite/Aktivität rechts geht? – Aad

0

Sie können den Zeitstempel während der Benutzeranmeldung speichern und auch die maximale Sitzungszeit in gemeinsamen Präferenzen speichern. Wenn der Benutzer versucht, die Transaktion erneut auszuführen, können Sie den Zeitstempel mit der aktuellen Uhrzeit und Sitzung überprüfen. Wenn der Zeitunterschied größer als die Sitzungszeit ist, fragen Sie nach dem Login.

+0

In einer einfachen Weise, ja, das wird funktionieren. Nur kann ein Benutzer der App mehrere Minuten auf der Seite verweilen (z. B. wenn er einige Transaktionsnummern aufschreibt). Dann, wenn er eine neue Transaktion will, muss er eingeloggt bleiben. – Aad

+0

Aber während ein Benutzer etwas schreibt, kann er auf dieser Seite bleiben, wenn ein Benutzer versucht, woanders hinzugehen, können Sie ihn bitten, sich erneut anzumelden. und können die aktuellen Daten für die weitere Verwendung speichern. –

0

Service Klasse ist die Antwort auf Ihr Problem.

Erstellen Sie einen Hintergrunddienst, der bei jeder Anmeldung gestartet wird und den Timercode dort eingibt.

Referenz für die Erstellung von Service:

https://developer.android.com/training/run-background-service/create-service.html

+0

Ja, ich dachte auch an einen Service! Ich habe es ausprobiert, aber es hat sofort aufgehört, also musst du es irgendwie weiterlaufen lassen? Und läuft es nicht weiter, wenn die Anwendung geschlossen wird? – Aad

+0

Service läuft weiter, auch wenn die Anwendung geschlossen wird, das ist der springende Punkt. Ich glaube, Sie haben bei der Implementierung einen Fehler gemacht, versuchen Sie, den Google-Richtlinien zu folgen –