Ich stehe derzeit vor folgendem Problem: w
Bislang habe ich diesen Initialisierungscode in eine SplashScreen-Aktivität eingefügt, die ich im Manifest als MAIN-Aktivität deklariert habe. Sobald der Initialisierungscode ausgeführt wurde, beende() ich den Splashscreen und starte die eigentliche Hauptaktivität, d.h. eine Aktivität, die aus mehreren Registerkarten besteht, von denen aus der Benutzer mehrere andere Aktivitäten erreichen kann.
Das Problem ist nun folgendes: Wenn meine Anwendung in den Hintergrund gestellt wird, wird nach einiger Zeit und nach dem Start anderer Anwendungen meine Anwendung/ mein Prozess beendet. Wenn ich sie vom Homescreen aus neu starte, stellt Android den Aktivitätsstapel (Task) wieder her und ruft onCreate() für sie auf. Die Splashscreen-Aktivität und damit der Initialisierungscode werden jedoch nicht ausgeführt, was zu einer Ausnahme führt.
Ich könnte nun den Initialisierungscode in die onCreate() der Anwendung einfügen, was jedoch zu einem schwarzen Bildschirm führt, bis die Methode abgeschlossen ist.
Hat jemand eine Idee, wo und wie ich meine App beim Start richtig initialisieren kann?
Initialisierungscode:
public void init() {
if (initialized) {
return;
}
// Initialize terms
List<Tag> tags= DynamicDao.loadAll(Tag.class);
int numTags = tags.size();
terms = new String[numTags];
for (int i = 0; i < numTags; i++) {
terms[i] = tags.get(i).getTag();
}
// Initialize document-term matrix
List<Item> items = DynamicDao.loadAll(Item.class);
createDocumentTermMatrix(items);
initialized = true;
}
Hinweis: Ein Element hat mehrere zugehörige Tags, aus denen ich einen Dokumentenvektor erstellen muss.