Android onCreate onResume - PullRequest
       50

Android onCreate onResume

15 голосов
/ 30 мая 2011

У меня проблема.Когда я впервые запускаю свое приложение для Android, в основном действии вызываются и onCreate, и onResume.но я хочу, чтобы меня называли только onCreate.

Что я могу сделать?

Ответы [ 4 ]

42 голосов
/ 30 мая 2011

Согласно документации SDK, то, что вы видите, является предполагаемым поведением. Взгляните на блок-схему в документации по Activity - Activity Lifecycle .

Программно вы можете преодолеть это, сохранив элемент экземпляра для отслеживания того, вызывался ли onResume раньше - при первом вызове установите переменную и верните, например,

private boolean resumeHasRun = false;

@Override
protected void onResume() {
    super.onResume();
    if (!resumeHasRun) {
        resumeHasRun = true;
        return;
    }
    // Normal case behavior follows
}
12 голосов
/ 12 марта 2012

Правильный ответ - использовать метод Activity onRestart(). Это, вероятно, то, что вы искали.

1 голос
/ 30 мая 2011

Как вы можете видеть в API, жизненный цикл активности всегда вызывает onResume перед отображением активности.http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

Полагаю, вы могли бы сделать глобальное логическое значение для первого доступа и установить для него значение false.Затем переопределите onResume и проверьте переменную.Если false, установите его в true и верните, если true, вызовите super.onResume.

Должно работать, но я не знаю, может ли это быть обработано проще, и у меня нет доступа к sdk здесьчтобы проверить это.

1 голос
/ 30 мая 2011

Вы ничего не можете сделать, так как работает жизненный цикл Activity.

См. http://developer.android.com/guide/topics/fundamentals/activities.html#Lifecycle для диаграммы, показывающей жизненный цикл.

...