Ich habe Probleme, dieses Problem in durchsuchbare Begriffe zu setzen. Ich arbeite an einer Android-Anwendung und speziell dem Startbildschirm für meine App. Die App muss Daten von einem externen Webdienst (einen blockierenden Funktionsaufruf) abrufen, während der Benutzer einen schönen Titel, Bild und Fortschrittsbalken erhält. Wenn die Daten ankommen, wird der Benutzer zum Hauptmenü umgeleitet. Es ist ein einfacher Bildschirm, alles ist in der XML-Layout-Datei definiert, mein Problem ist, dass ich nur für ein paar Sekunden einen schwarzen Bildschirm und dann das Hauptmenü bekomme. Wenn ich zurück drücke, bekomme ich den Begrüßungsbildschirm mit dem Fortschrittsbalken, der sich fröhlich dreht.Android Dev: Android-Layout wird nicht in der Zeit gezeichnet
Hier ist, was ich bisher:
public class SplashActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
}
@Override
public void onStart(){
super.onStart();
DatabaseManager db = new DatabaseManager(this.getBaseContext());
db.fetchExternCatalog(); //doesnt return until data arrives
Intent intent = new Intent().setClass(this, MainMenuActivity.class);
startActivity(intent);
}
}
Es scheint der Bildschirm ist nicht gezeichnet tatsächlich, bis die Tätigkeit ausgeführt wird (nach onCreate(), onStart(), etc). Ich dachte an Start() wäre der perfekte Ort, um dies zu setzen, aber anscheinend nicht.
Also, wie zeichne ich alles auf dem Bildschirm und mache meine Sperrfunktion Anruf nach, so dass der Benutzer tatsächlich den Begrüßungsbildschirm sieht, während die Daten heruntergeladen werden?
Sieht aus wie ich die Antwort auf meine eigene Frage gefunden haben an der entsprechenden Liste auf der Seite sah sollte (noch irgendwie neu hier ha) vor der Veröffentlichung: http: // Stackoverflow. com/questions/1979524/android-splashscreen, hat den Trick – macgregor