Это нормально для метода «afe.oncreate ()», который будет называться несколько раз

StackOverflow https://stackoverflow.com/questions/3588682

  •  01-10-2019
  •  | 
  •  

Вопрос

У меня есть какой-код в методе OneReate. Метод деятельности и заметил, что он называется три раза. Это нормальное поведение? Спасибо.

Это было полезно?

Решение

Вы можете прочитать через документацию на Активность жизненного цикла.

Oncreate будет называться только один раз для каждой жизни активности. Тем не менее, существует ряд ситуаций, которые могут привести к убийству вашу деятельность и вернуться к жизни. Таким образом, Oncreate снова будет вызван.

Чтобы правильно поддерживать это, вы можете сохранить информацию о состоянии в OnsaveInStanceState и восстановить ее в этом состоянии, которую вы попадаете на создание.

Другие советы

Кроме того, ожидаемых случаев, я заметил, что только те действия (Oncreate) вызываются дважды, которые создают новую нить или Runnable. (Я верю, что это будет ошибка в Android).

Решение простое (хотя вас не нравится: P)

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash_screen);

        if(savedInstanceState == null){
            // everything else that doesn't update UI
        }
    }

Вы также можете обрабатывать изменения конфигурации самостоятельно, настроить на AndroidManifest Следующее утверждение, в конфигурации активности:

android:configChanges="orientation|keyboardHidden"

Для получения дополнительной информации вы можете взглянуть на Официальная документация

Ниже приведен сценарий, который я столкнулся (и решен), который вызывает поведение, которое вы описываете:

Есть 3 события, которые запускают OnTouch - 1. Android.View.motionevent.Action_up 2. Android.View.motionevent.Action_down 3. android.view.motionevent.cont_move.motionevent.cong_move.

Часто все три из этих событий огонь одновременно, чтобы вызвать слушатель Ontouch. Когда этот слушатель используется для запуска активности (с помощью намерения, передаваемого на странству ()), вы можете воспроизвести это поведение, которое позвонило бы OnCreate на активность несколько раз (3 в этом примере).

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

У меня была похожая проблема, это было вызвано Mobileads. После того, как я инициализировал их раньше super.onCreate(...) Проблема прошла.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top