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

Why when the new Android project is started in the Android Studio, there is no OnStart() after OnCreate() in the autogenerated code?

为什么在 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);
    }
}

onStart() 被系统调用。 您不必调用它。

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

@Override 受保护的 void onStart() { ... }

onStart() 不如 onCreate() 常用。如果您有实施 onStart() 的理由,您可以自己添加。我相信 onStart() 的默认实现是在 Activity.

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

LifeCycle 回调方法被 ActivityManager 从系统(框架)。 因此,您不会在 Activity 代码中看到对这些方法的任何直接调用。

这些生命周期方法在需要时调用。 like onCreate 将在框架新创建 Activity 实例时调用。

但是 onStart 将在 Activity 对用户可见时调用。

这是在Java中的继承问题。查看 Activity class 的 class 声明,您在 Android 中 - 它正在扩展其他一些 class,例如 AppActivityCompat 或其他基地 Activity class。

因此,当您的代码是 运行 时 - activity 的 superclass 中的所有内容(所有方法)都会被执行。其中有很多,包括所有生命周期方法,例如 onCreate()、onStart()、onResume() 等

如果您需要在方法中执行某些特定操作,您可以在子class(即 MainActivity)中覆盖它,并且覆盖方法中的代码将 运行 而不是 superclass 中的方法。

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

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