Android onCreate onResume
У меня проблема.
Когда я впервые запускаю приложение для Android, в основном действии вызывается как onCreate
, так и onResume
. но я хочу, чтобы называться только onCreate.
Что я могу сделать?
Ответы
Ответ 1
В соответствии с документами SDK, что вы видите, это предполагаемое поведение. Посмотрите блок-схему в документах для Activity - Жизненный цикл активности.
Программно вы можете преодолеть это, удерживая члена экземпляра для отслеживания того, был ли onResume ранее вызван - при первом вызове задайте переменную и верните, например.
private boolean resumeHasRun = false;
@Override
protected void onResume() {
super.onResume();
if (!resumeHasRun) {
resumeHasRun = true;
return;
}
// Normal case behavior follows
}
Ответ 2
Правильный ответ заключается в использовании метода Activity
onRestart()
. Вероятно, это то, что вы искали.
Ответ 3
Вы ничего не можете сделать, поскольку так работает жизненный цикл Activity.
См. http://developer.android.com/guide/topics/fundamentals/activities.html#Lifecycle для диаграммы, отображающей жизненный цикл.
Ответ 4
Как вы можете видеть в API, жизненный цикл активности всегда вызывает onResume перед показом активности.
http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
Я думаю, вы могли бы сделать глобальное логическое для первого доступа и установить его в false.
Затем переопределите onResume и проверьте переменную.
Если false, установите значение true и return,
если true, вызовите super.onResume.
Должен работать, но я не знаю, можно ли его обрабатывать проще, и у меня нет доступа к sdk, чтобы его протестировать.