Wenn eine globale Variable android.widget
definiert wird, z. TextView
, ist es vorzuziehen, lateinit
oder by lazy
zu verwenden? Ich dachte zuerst, dass by lazy
vorzuziehen wäre, da es unveränderlich ist, aber ich bin mir nicht ganz sicher.
by lazy
Beispiel:
lateinit
Beispiel:
Gibt es Vorteile bei der Definition einer globalen android.widget
var / val, wenn Sie eine über der anderen verwenden? Gibt es irgendwelche Probleme mit der Verwendung von by lazy
, um ein android.widget
val zu definieren? Basiert die Entscheidung nur darauf, ob Sie einen veränderlichen oder unveränderlichen Wert haben wollen?
Es gibt eine Falle mit by lazy
. Die Widget-Eigenschaft wäre schreibgeschützt und daher technisch final (in Java-Begriffen). Es gibt jedoch keine dokumentierte Garantie, dass onCreate()
nur einmal für eine Instanz aufgerufen wird. Auch findViewById()
könnte null
zurückgeben.
Daher ist es besser, lateinit
zu verwenden, und Sie erhalten eine Ausnahme, um Ihnen mitzuteilen, ob val
vor onCreate()
verwendet wurde.
Eine dritte Möglichkeit wären synthetische Android-Eigenschaften . Dann müssen Sie sich nicht um die Variablen kümmern.
%Vor%Tags und Links android-widget kotlin android-studio