Android 在调用onCreate之前初始化变量是一种不好的做法吗?

Android 在调用onCreate之前初始化变量是一种不好的做法吗?,android,initialization,instance-variables,Android,Initialization,Instance Variables,由于我是Android新手,我一直在想,在调用onCreate()之前在类的字段声明中初始化一个变量(如上下文对象)是否不好。我正在粘贴一张我正在谈论的东西的图片。看看如何以及何时初始化上下文对象。与onCreate相比,它是什么时候被实例化的?我能相信每次调用这个类时它都会被初始化吗 初始化onCreate()中不会失败的上下文。每次调用此类时,它都会初始化。初始化onCreate()中的上下文,不会失败。每次调用此类时,它都会初始化。在调用onCreate之前,不能使用上下文。它不会完全初始

由于我是Android新手,我一直在想,在调用onCreate()之前在类的字段声明中初始化一个变量(如上下文对象)是否不好。我正在粘贴一张我正在谈论的东西的图片。看看如何以及何时初始化上下文对象。与onCreate相比,它是什么时候被实例化的?我能相信每次调用这个类时它都会被初始化吗


初始化onCreate()中不会失败的上下文。每次调用此类时,它都会初始化。

初始化onCreate()中的上下文,不会失败。每次调用此类时,它都会初始化。

在调用
onCreate
之前,不能使用
上下文。它不会完全初始化。您可以随时将其保存在变量中


真正的问题是——你到底为什么要这么做?除非它是静态的,否则没有理由将它的副本保存在类变量中,因为您总是可以将它引用为this。在调用
onCreate
之前,决不能保存静态
上下文。它不会完全初始化。您可以随时将其保存在变量中


真正的问题是——你到底为什么要这么做?除非它是静态的,否则没有理由将它的副本保存在类变量中,因为您总是可以将它引用为this。您永远不应该保存静态
上下文

其他变量呢?在创建之前初始化数组是不明智的。我并不是说这些都是我正在使用的战术,但我无意中意识到它奏效了。我只是想完全理解它。所以除了上下文之外,初始化列表和其他变量是否同样不明智?不,实例化列表或类似的方式没有问题。唯一的问题是如果equal的右侧包含对尚未完全初始化的变量的调用(需要调用其构造函数以外的函数才能完全使用)。这是相当罕见的,但上下文是明显的例外。你应该还是不应该更多的是个人风格的选择。正如pciture所显示的那样,在编译时,你“可以”,所以答案是错误的。您“不应该”,因为它可能为null,是另一个topic@CaptainCrunch不,你不能。它将被编译,但变量不会被初始化,也不会正常工作。所以你不能真的这么做。它编译的事实并不意味着它可以工作。在这种情况下,你错了,它不能为null,因为this关键字从不为null。其他变量呢?在创建之前初始化数组是不明智的。我并不是说这些都是我正在使用的战术,但我无意中意识到它奏效了。我只是想完全理解它。所以除了上下文之外,初始化列表和其他变量是否同样不明智?不,实例化列表或类似的方式没有问题。唯一的问题是如果equal的右侧包含对尚未完全初始化的变量的调用(需要调用其构造函数以外的函数才能完全使用)。这是相当罕见的,但上下文是明显的例外。你应该还是不应该更多的是个人风格的选择。正如pciture所显示的那样,在编译时,你“可以”,所以答案是错误的。您“不应该”,因为它可能为null,是另一个topic@CaptainCrunch不,你不能。它将被编译,但变量不会被初始化,也不会正常工作。所以你不能真的这么做。它编译的事实并不意味着它可以工作。在这种情况下,你错了,它不能为null,因为this关键字永远不会为null。