0

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

Android 官方参考网站

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

4 回答 4

2

ActivityManager从系统(框架)调用一个活动的生命周期回调方法。因此,您不会在 Activity 代码中看到对这些方法的任何直接调用。

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

但是onStart当 Activity 对用户可见时会被调用。

于 2017-09-19T04:07:05.417 回答
1

onStart() 由系统调用。你不必调用它。

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

@Override protected void onStart() { ... }

于 2017-09-19T03:53:44.913 回答
0

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

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

于 2017-09-19T03:57:37.673 回答
0

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

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

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

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

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

于 2017-09-19T09:36:41.997 回答