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