为什么在Android Studio中启动新的Android项目时,自动生成的代码中的OnCreate()之后没有OnStart()?

时间:2017-09-19 03:42:22

标签: android android-studio android-activity oncreate onstart

为什么在Android Studio中启动新的Android项目时,在自动生成的代码中OnCreate()之后没有显式调用OnStart(),尽管所有教程都说OnCreate()后面总是跟着OnStart() ?另外,我在AppCompatActivity等基类中查找,在OnCreate()的实现中,OnStart()也没有(显式或隐式)回调。要清楚,一切正常,我没有任何错误或问题,但我看到的(OnCreate()之后没有OnStart())和教程说的之间似乎存在矛盾。任何人都可以澄清这个吗?

Official Android reference site

package mypack.helloandroid;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MyActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.my_layout);
    }
}

4 个答案:

答案 0 :(得分:2)

系统(框架)中 ActivityManager 为活动调用

LifeCycle 回调方法。 所以你不会在Activity代码中看到这些方法的任何直接调用。

在需要时调用这些生命周期方法。当框架新创建Activity实例时,将调用onCreate之类的内容。

但是当活动对用户可见时,将调用onStart

答案 1 :(得分:1)

onStart()由系统调用。 你不必打电话。

如果您想要一些自定义行为, 您可以覆盖onStart()

@覆盖 protected void onStart(){ ... }

答案 2 :(得分:0)

onStart()的使用频率低于onCreate()。如果您有理由实施onStart(),可以自行添加。我相信onStart()的默认实施位于Activity

在Android中,我们不像我们在"典型"中那样编写main()方法。 Java应用程序。相反,我们在生命周期回调中编写代码。这些是我们的应用程序的切入点。 Android系统根据文档中描述的合同调用这些回调。

答案 3 :(得分:0)

这是Java中继承的问题。查看Android中您拥有的Activity类的类声明 - 它扩展了一些其他类,如AppActivityCompat或其他基类Activity类。

因此,当您的代码运行时 - 您的活动的超类内的所有内容(所有方法)都会被执行。它们中有很多,包括所有生命周期方法,如onCreate(),onStart(),onResume()等。

如果你需要在方法中做一些特定的操作,你在子类中重写它(即MainActivity),而overriden方法中的代码将在超类中运行而不是

有关更多信息,请阅读官方文档:

https://developer.android.com/guide/components/activities/activity-lifecycle.html