Вопрос

Жизненный цикл деятельности задокументирован во многих местах, но я не смог найти то, что мне нужно. Это моя деятельность, в ней есть конструктор и метод onCreate. В моем проекте у меня также есть вход в эти методы, и каждый раз, когда я перехожу от портретной к альбомной, я вижу, что оба метода выполняются. Почему мой конструктор называется? не является активностью в стеке, а экземпляр моей активности находится в памяти, поэтому, когда происходит изменение конфигурации, должны выполняться только oncreate и on keepistancestate (конечно, onResume). Почему каждый раз вызывается конструктор, кто звонит? Каждый раз, когда что-то меняется в конфигурации, оба метода гарантированно вызываются (один за другим, в той же последовательности).

родовое слово

Я играл со своим образцом приложения, но хочу узнать более подробную информацию, может ли кто-нибудь прояснить мне сценарий, когда включен конструктор? Я создал много документации по жизненному циклу, но никто не объясняет детали, когда конструктор включены

Редактировать1: В некоторых местах я читал, что в системе есть стек, в который добавлены действия, поэтому в следующий раз они начнут работать быстрее, но что, если конфигурация изменится? Обязательно ли вызывать конструктор и методы oncreate?

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

Решение

Следовательно, нет причин иметь конструктор для вызова активности, если у вас нет конструктора с параметрами (onCreate все равно вызывает его для нас ...).Однако в основном это похоже на java-вещь onCreate, которая, вероятно, вызывает конструктор по умолчанию activties, который

родовое слово

Попробуйте то же самое с конструктором с параметром вроде

родовое слово

Надеюсь, это поможет,

Я бы дождался более квалифицированного ответа :)


Изменить: Итак, когда вы поворачиваете свой телефон, который вызывает onCreate, поскольку он будет создан снова, а onCreate, вероятно, вызывает конструктор по умолчанию для вызова экземпляра вашей активности :) ... Я забыл упомянуть об этом ранее.

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

После ротации ваша деятельность будет перезапущена полностью.Вы можете предотвратить это с помощью android:configChanges="keyboardHidden| orientation" в своем манифесте.

Как ответил @rekire, действие перезапускается при повороте экрана.Здесь перезапуск означает, что фреймворк создает еще один экземпляр активности, поэтому вызывается конструктор вашего класса активности, а затем onCreate ().Новый экземпляр действия заменяет старый, который будет окончательно переработан сборщиком мусора, если его ссылка не принадлежит другим.

Если вы хотите избежать перезапуска активности при повороте экрана, прочтите этот вопрос .

Я нарисовал диаграмму UML, чтобы описать жизненный цикл активности Android .

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