我基本上是在问这两种方法之间的区别:
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()
)时创建。 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
或之后创建它。