当创建一个Activity对象时,onCreate方法会被调用吗?

13

onCreate()方法是在一个类对象被创建时调用的吗?还是只有当一个活动被启动,例如通过 startActivity(...) 方法时才会调用它?

4个回答

20
回答你的问题,如果一个类继承Activity,在正常情况下实例化该Activity(MyActivity ma = new MyActivity();),onCreate()方法将不会被调用。只有通过Intent启动Activity时,该方法才会被调用。

当调用recreate()时会发生什么? - Karue Benson Karue
就此而言,MyActivity ma = new MyActivity(); 有任何用处或意义吗?我认为与活动相关的任何操作都发生在通过Intent启动活动时。 对于这个问题,MyActivity ma = new MyActivity(); 可以没有实际作用或意义。我认为与活动相关的所有操作都是在使用Intent启动活动时执行的。 - Sreekanth Karumanaghat

15
根据 developer.android.com 的说明,当活动启动时,onCreate 函数将被调用。详细信息请参见此处

活动的不同状态


3

2
我认为在Android中,你不能编写如下的内容:
AClassThatExtendedAnActivity instance = new AClassThatExtendedAnActivity();

启动Activity的唯一方法是通过Intent来启动你的Activity。

当你重写方法onCreate(Bundle savedInstanceState);时,实例的创建被封装在super.onCreate(savedInstanceState);中。

祝好,


但是我们在面向对象编程中学到的是,访问类的方法的唯一方式是通过该类的对象,那么这不是违背了这个原则吗?请给我们一些解释。 - Sreekanth Karumanaghat
1
我们不会调用onCreate()方法;当您从意图启动一个Activity时,它会自动调用。 - Houcine
我理解这一点,但是假设在Activity A中有一个公共方法methodXYZ(),我可以从另一个Activity B中的onCreate()调用此方法,那么这种模式有什么用处吗? - Sreekanth Karumanaghat
这种模式是无用的,应避免使用。要从另一个活动中调用公共方法,我认为取决于该方法要做什么,即您可以使用startActivityForResult,或使用回调模式在两个活动之间进行通信。我认为你应该关注这个主题:https://dev59.com/5mIk5IYBdhLWcg3wBZ_7。 - Houcine
我知道这没什么用,但如果我们来自面向对象编程的世界,那不是我们所学的吗?我想我从未在面向对象编程概念中读到过回调方法,所以如果我是一个具有面向对象编程背景的Android新手,那么有没有一种直观的方式可以让我直观地理解这些概念呢? - Sreekanth Karumanaghat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接