Android – Activity Constructor vs onCreate

Я понимаю, что в действиях Android есть конкретные жизненные onCreate и что onCreate следует переопределить и использовать для инициализации, но что именно происходит в конструкторе? Есть ли случаи, когда вы могли / должны переопределять конструктор Activity , или вы никогда не должны касаться его?

Я предполагаю, что конструктор никогда не должен использоваться, потому что ссылки на « Activities не полностью очищены (что препятствует сборщику мусора), и что для этой цели используется onDestroy . Это верно?

Solutions Collecting From Web of "Android – Activity Constructor vs onCreate"

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

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

В двух словах конструктор заставляет вас моделировать «мастерактивность», которую можно использовать повторно наследованием!

Хорошей причиной для размещения вещей в конструкторе, как сказал комментарий Гили, является использование конечных полей.

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

Хотя это против моего идеала, я избегаю конструктора для инициализации членов активности и полагаюсь на onResume() и onPause() для ресурсов, с которыми работает мое приложение.

Для onCreate() я обычно использую его для сопоставления представлений локальным переменным. Хотя андроидные аннотации уже делают это для меня, поэтому у меня редко есть метод onCreate() для моей активности. Я все еще использую его в Сервисе.

Однако, если вы посмотрите на членов, которые вы можете инициализировать

  • Они будут иметь «близкий» метод, который вы должны вызвать в нужное время (onResume или onPause)

  • Они будут частью представления, что означает, что он должен быть инициализирован, а затем нужно создать CreateCreate

  • Они – константы, которые в любом случае не нужно вставлять в конструктор, только статический финал. Сюда входят константы Paint и Path, которые могут быть инициализированы статическим блоком

Вы должны переопределить конструктор, когда ваша активность будет иметь настраиваемые параметры или вы хотите отслеживать вызовы из унаследованных классов.