Android-эквивалент: void main () / Sub Main? - PullRequest
3 голосов
/ 01 марта 2011

Я пытаюсь заставить мое приложение Android запускать некоторый код при запуске из панели запуска, ДО запуска в действие. То есть я хочу, чтобы мое приложение начиналось с Sub Main, а не сначала входило в действие.

По сути, в псевдо, я хочу сделать что-то вроде этого:

void main() {
    doSomeInitializationStuff();

    startActivity(myFirstActivity);
}

Согласно этому вопросу , похоже, что Android не имеет этой концепции буквально. Поэтому я рассматривал создание невидимой Активности как свою точку входа, но не могу понять, как сделать активность невидимой. Я пробовал эти два метода, которые, кажется, единственные, которые появляются в моих поисках, но они, похоже, на самом деле ничего не делают ...

this.setVisible(false); this.setTheme(android.R.style.Theme_Translucent_NoTitleBar);

Ответы [ 3 ]

1 голос
/ 01 марта 2011

Вместо создания невидимого действия вы можете создать всплывающее действие и начать там все свои инициализации.

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

Вот JavaDoc для onCreate класса приложения

/**
 * Called when the application is starting, before any other application
 * objects have been created.  Implementations should be as quick as
 * possible (for example using lazy initialization of state) since the time
 * spent in this function directly impacts the performance of starting the
 * first activity, service, or receiver in a process.
 * If you override this method, be sure to call super.onCreate().
 */
public void onCreate() {
}

Вам нужно сообщить приложению, что вы используете пользовательский класс приложения, используя параметр android: name втег файла манифеста Android.

0 голосов
/ 01 марта 2011

Один из вариантов - не иметь невидимую активность, а иметь SplashScreen.Это имеет то преимущество, что пользователь уже видит, что что-то происходит при запуске приложения, поэтому у него не создается впечатление, что оно не работает.Для примера см. Например this class ;вы бы поместили doSomeInitStuff () в строку 54

В противном случае, я думаю, вы можете просто не загружать макет в onCreate() первого действия и затем оттуда идти вперед.

0 голосов
/ 01 марта 2011

В большинстве приложений Android есть концепция SplashScreen, которую можно использовать на этом экране для выполнения такого поведения, и настоящим мотивом этого SplashScreen является выполнение таких задач в фоновом режиме при рекламе самого приложения и различных связанных с этим вещей

...