创建 Activity 对象时是不是调用 onCreate?

Posted

技术标签:

【中文标题】创建 Activity 对象时是不是调用 onCreate?【英文标题】:Is onCreate called when an Activity object is created?创建 Activity 对象时是否调用 onCreate? 【发布时间】:2011-09-19 18:11:25 【问题描述】:

在创建扩展活动的类对象时是否调用 onCreate?还是仅在活动启动时调用它,例如通过 startActivity(...)。

【问题讨论】:

【参考方案1】:

回答您的问题,对于扩展活动的类,如果您尝试通过正常方式( MyActivity ma = new MyActivity(); )实例化该活动,则不会调用 onCreate() 方法。只有当您以意图启动 Activity 时,才会调用该方法。

【讨论】:

谢谢。回答了我的问题。 调用 recreate() 时会发生什么? 就此而言 MyActivity ma = new MyActivity();这有什么用或意义吗?我认为任何与活动相关的操作都会在通过 Intent 启动活动时发生。【参考方案2】:

根据 developer.android.com,onCreate 在活动启动时被调用。查看详情here

【讨论】:

【参考方案3】:

应用程序中的每个活动都有自己的生命周期。 当一个活动被创建时,onCreate() 函数会被执行一次且只有一次。

查看Activity Life Cycle

【讨论】:

【参考方案4】:

我认为在 Android 中,你不能这样写:

AClassThatExtendedAnActivity instance = new AClassThatExtendedAnActivity();

您可以用来启动 Activity 的唯一方法是传递以启动您的 Activity 的意图。

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

问候,

【讨论】:

但是我们在 OOP 中了解到,访问类的方法的唯一方法是通过类的对象,所以这不是反对吗?请对此有所了解。 我们不调用 onCreate() 方法;当您从意图启动 Activity 时会自动调用它。 我明白,但假设有一个公共方法。 Activity A 中的 methodXYZ() ,我可以从另一个活动中调用此方法,例如 Activity B 在其 onCreate() 中,那么这种模式有什么用处吗? 这种模式没用,应该避免。为了从另一个活动调用公共方法,我认为这取决于在该方法中想要做什么,即您可以使用 startActivityForResult,或使用回调模式在两个活动之间进行通信。我认为你应该关注这个线程:***.com/questions/19666572/…. 我明白这没什么用,但是如果我们来自OOPs世界,我们不是被教导了吗?我想我从来没有读过 OOPs 概念中的回调方法,所以如果我是 android 的新手,说有 OOPs 背景,那么有什么直观的方法可以让我直观地理解这些概念吗?

以上是关于创建 Activity 对象时是不是调用 onCreate?的主要内容,如果未能解决你的问题,请参考以下文章

如何在活动形式非活动类中调用方法

【java安卓】怎么调用另一个安卓activity的对象?

Activity 生命周期回调可以相互中断还是同时发生?

Activity创建时布局文件的实现原理

Realm 实例未在 Activity#onDestroy 上关闭

android setContentView处理流程