我是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
中没有这些方法的原因吗?这看起来像个愚蠢的问题,但我在这里感到困惑:)
答案 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。如果要覆盖方法,请使用它们。如果您没有按顺序执行任何特殊操作,只需保留它们,您的活动就可以正常工作,因为默认将自动调用。
下图显示了生命周期方法的调用顺序。
我建议您观看这些简短的视频,这些视频极好地解释了活动生命周期的工作原理。
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...");
}