Android Activity中没有OnStart()

时间:2014-10-26 23:07:55

标签: java android android-activity

我是Android的初学者,正在阅读Android生命周期的官方Activity教程,该教程指出OnResume()只能在OnStart()之后调用。 这是真的吗?

如果是,那么class(MainActivity)延伸Android.Activity,而OnStart()OnStop()方法没有。我列出了这个类文件中的所有方法:

OnCreate()
OnResume()
onPause()

launchNewActivity(){
startActivity(new Intent(this, SecondActivity.class));
finish();
}

我对此有疑问:

  • 如果没有onStart()方法,那么活动将如何开始?
  • 我可以在onStart()中找到onStop()SecondActivity方法。这就是我在MainActivity中没有这些方法的原因吗?

这看起来像个愚蠢的问题,但我在这里感到困惑:)

3 个答案:

答案 0 :(得分:5)

您似乎对活动生命周期感到困惑。

OnResume() can only be called after OnStart() ?

有一点是你没有调用(调用)这些方法。创建活动时会自动调用。此外,还有一些方法在活动暂停时自动调用。

您可以做的是,当这些方法自动执行时,覆盖此类方法以执行某些操作。就像知道这些方法的执行顺序一样,您可以在任何阶段执行操作。

要回答您的问题,默认情况下会在onResume()方法之后调用 YES onStart()。这就是序列。

There is a class (MainActivity) extends by Android.Activity which doesn't have OnStart() and OnStop()methods?

其中一些方法不会自动实施。您可以在任何活动中实施所有生命周期方法。例如,如果在调用onStop()方法时不想执行任何操作,则可以在您不使用的活动中覆盖该方法,如下例所示。

//Overriding the onStop() method to do actions of your interest
@Override
protected void onStop() {
    // TODO Auto-generated method stub
    super.onStop();
    Log.d("TAG", "On Stop");
    //Do the action you would like to perform
}

If there is no onStart() method then how can activity will get start?

如果没有方法,仍然会调用该方法。如果您需要在那里执行特定操作,则覆盖活动类中的方法,并指定在创建活动时自动调用该方法时要执行的操作。

I can find onStart() and onStop() method in SecondActivity. Is that why I don't have these method in MainActivity?

您可以在任何活动中使用所有生命周期方法,包括MainActivity。如果要覆盖方法,请使用它们。如果您没有按顺序执行任何特殊操作,只需保留它们,您的活动就可以正常工作,因为默认将自动调用。

下图显示了生命周期方法的调用顺序。 enter image description here

我建议您观看这些简短的视频,这些视频极好地解释了活动生命周期的工作原理。

http://www.youtube.com/watch?v=Qs-lGmaMIDk&index=24&list=PLlxmoA0rQ-LyCGSSD_nuPAmXDSR_FU0RR

http://www.youtube.com/watch?v=F5XP1bYBRdI&list=PLlxmoA0rQ-LyCGSSD_nuPAmXDSR_FU0RR&index=25

我希望这可以帮到你!

答案 1 :(得分:2)

  

OnResume()只能在OnStart()之后调用。这是真的吗?

onStart()将在调用onResume()时被调用。

  

如果没有onStart()方法,那么活动将如何开始?

您从onStart()继承Activity

答案 2 :(得分:1)

是的,onResume()只能在onStart()之后调用。

当您从Activity扩展MainActivity时,这意味着您将获得MainActivity中的所有Activity方法。这是继承。 Check it out here

如果您想更改任何这些方法,则必须覆盖它:

@Override
protected void onResume() {
    super.onResume();
    Log.i(TAG, "On Resume...");
}