Инициализация приложения Android

В настоящее время я сталкиваюсь со следующей проблемой: всякий раз, когда мое приложение Android запускается, ему необходимо выполнить некоторый трудоемкий код инициализации. Без этого кода все мои действия / услуги в приложении выиграли ' t работают правильно.

До сих пор я поместил этот код инициализации в действие SplashScreen, которое я объявил как действие MAIN в манифесте. После выполнения кода инициализации я завершаю () экран-заставку и начинаю собственно основное действие, то есть действие, состоящее из нескольких вкладок, откуда пользователь может перейти к нескольким другим действиям.

Теперь проблема заключается в следующем: когда мое приложение переводится в фоновый режим, через некоторое время и после запуска других приложений мое приложение / процесс уничтожается. Когда я повторно запускаю его с домашнего экрана, Android восстанавливает стек активности (задачу) и вызывает для них onCreate (). Однако действие экрана-заставки и, следовательно, код инициализации не выполняются, что приводит к исключению.

Теперь я мог бы поместить код инициализации в onCreate () приложения, однако это приводит к черному экрану, пока метод не завершится.

Кто-нибудь знает, где и как я могу правильно инициализировать свое приложение при запуске?

Код инициализации:

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;
}

Примечание: с элементом есть несколько связанных тегов , из которого мне нужно создать вектор документа.

6
задан Matthias 10 September 2010 в 19:34
поделиться