我基本上是在问这两种方法之间的区别:

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或之后创建它。

10-08 15:26