Я понимаю, что у Android Activities
есть определенные жизненные циклы, которые onCreate
следует переопределить и использовать для инициализации, но что именно происходит в конструкторе? Есть ли случаи, когда вы могли / должны также переопределить Activity
конструктор, или вы никогда не должны его трогать?
Я предполагаю, что конструктор никогда не следует использовать, потому что ссылки на Activities
не очищаются полностью (что мешает сборщику мусора) и onDestroy
он существует для этой цели. Это правильно?
java
android
garbage-collection
android-activity
oncreate
боготворить
источник
источник
Ответы:
Я не могу придумать какой-либо веской причины что-либо делать в конструкторе. Вы никогда не создаете действие напрямую, поэтому вы не можете использовать его для передачи параметров. Как правило, просто делайте что-то в onCreate.
источник
Хорошая причина для помещения вещей в конструктор, как было сказано в комментарии Гили, - это использование полей final.
Однако, если вы инициализируете что-то в конструкторе, то время жизни объекта будет немного больше, хотя я не думаю, что это сильно, потому
onCreate
что вскоре после этого будет вызываться.Несмотря на то, что это против моего идеала, я избежать конструктор для инициализации элементов деятельности и опираться на
onResume()
иonPause()
за ресурсы , что мое приложение имеет дело.Потому что
onCreate()
я обычно использую его для отображения отображения на локальные переменные. Хотя android-annotations уже делают это за меня, поэтому у меня редко естьonCreate()
метод для моей Activity. Хотя я до сих пор использую его в Сервисе.Однако, если вы посмотрите на членов, вы можете инициализировать
у них будет метод «закрытия», который вы должны вызывать в нужное время (onResume или onPause)
они будут частью представления, что означает, что его нужно инициализировать, а затем нужно вызвать onCreate
это константы, которые в любом случае не нужно помещать в конструктор, достаточно статического финала. Сюда входят константы Paint и Path, которые могут быть инициализированы статическим блоком.
источник
Я сейчас занимаюсь случаем, когда нужно переопределить конструктор. Фактически, у меня есть некоторые виды деятельности, имеющие такую же структуру. Поэтому вместо создания множества действий я создам одно «Основное» действие, а остальные унаследуют это. Поэтому мне нужно переопределить конструктор дочернего действия, чтобы иметь возможность инициализировать некоторые переменные, которые будут использоваться в методах oncreate.
В двух словах, конструктор заставляет вас моделировать «мастеративность», которую можно повторно использовать путем наследования!
источник
Вам нужно переопределить конструктор, когда ваша активность будет иметь настраиваемые параметры или вы хотите отслеживать вызовы из классов, унаследованных от.
источник
startActivityForResult
я должен включить частный конструктор в свой пользовательский компонент, даже если это действие никогда не будет запущено и не будет иметь видимых элементов, я просто использую его для результата.