[英]Member object instantiation in onCreate vs. during declaration
我基本上是在询问这两种方法之间的区别:
public class myClass extends AppCompatActivity {
private objectType mObject = new objectType();
@Override
protected void onCreate(Bundle savedInstanceState) {
//do stuff with mObject
和
public class myClass extends AppCompatActivity {
private objectType mObject;
@Override
protected void onCreate(Bundle savedInstanceState) {
mObject = new ObjectType();
我希望我足够清楚。 当我们想要选择一个与另一个时,我很难理解。
功能上没什么。
创建Activity对象时将创建第一个new myClass()
调用new myClass()
)。 Android系统在创建期间的某个时刻执行此操作。
当系统最终调用onCreate()
时,将创建第二个。
如果你有一个在构造函数中需要Context
的对象,那就是问题。 你可以这样做:
public class myClass extends AppCompatActivity {
private objectType object = new objectType(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
//do stuff with object
应用程序将突然崩溃,因为您很可能会尝试从尚不存在的Context
中提取资源。 (请记住,此时不会创建活动)。
因此,如果您的对象必须使用Context
,则必须在调用onCreate
时或之后创建它。
正如您可能知道的,Activity具有明确定义的生命周期。 如果你在构造函数和onCreate中创建新实例并不总是重要,但在这些情况下你肯定更喜欢onCreate:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.