Activity lädt nicht vollständig

  • Antworten:1
Simon Siggelkow
  • Forum-Beiträge: 1

08.03.2018, 21:35:17 via Website

Hallo, ich bin noch ein ziemlicher Anfänger in der Android-Entwicklung und habe da ein kleines Problem. Ich denke ich weiß auch wo das Problem liegt, aber nicht wie ich dieses löse.

Ich habe zunächst nur 2 Activities: Eine Splash-Activity und eine Login-Activity.
Beim Starten der App wird die Splash-Activity angezeigt, diese besteht einfach nur aus eine TextView und eine ProgressBar.

Diese Activity soll solange angezeigt werden, bis überprüft wurde, ob der User bereits eingeloggt ist. Ist der User noch nicht eingeloggt, soll die Login-Activity angezeigt werden.

Folgendes Problem: Es ist egal an welcher Stelle (onCreate, onStart, onResume) ich den Code zur Überprüfung schreibe (oder überhaupt irgendwelchen Code), die komplette Activity mit der TextView und der ProgressBar wird erst nach Abarbeitung des Codes geladen. Sprich: Es wird nur das grundlegende Style-Theme angezeigt, aber nicht die Elemente aus dem Layout. Erst nach dem Abarbeiten des Codes wird das Layout geladen. Ich denke das Problem ist, dass das Layout erst nach onResume(); geladen wird und jeglicher Code vorher abgearbeitet wird.

Aber an welcher Stelle soll ich nun genau meinen Code platzieren? Die ProgressBar soll dem User demonstrieren, dass derzeit etwas geladen wird (Die Anmeldung) und dies soll im Hintergrund geschehen.

Ich habe es bereits mit einem separatem Thread probiert, da gab es dann aber mehr Probleme und unschönes programmieren statt eine zufriedene Lösung.

Ich bedanke mich für jegliche Hilfe

Kommentieren
Gelöschter Account
  • Forum-Beiträge: 79

13.03.2018, 13:40:22 via Website

Wahrscheinlich musst du einen AsyncTask nutzen, um die Überprüfung durchzuführen, ansonsten friert die App ja während der Überprüfung ein, was dann zu dem von dir beschriebenen Verhalten führt.
Schau dir dafür mal das hier an:
https://developer.android.com/reference/android/os/AsyncTask.html

Falls du AndroidAnnotations verwendest, reicht auch eine Funktion, die du mit der Annotation "@Background" markierst.
http://androidannotations.org/

Eine weitere, aber unelegante Methode, wäre, einen Timer zu machen, der deine Überprüfung durchführt.

Hilfreich?
Kommentieren