首先,我们知道在函数super.onStart()
回调中调用onResume()
时没有意义。但是了解android活动的生命周期。任何人都可以向我解释一下。
让我来介绍一下它。我创建了简单的活动,并尝试运行两个代码版本。在版本1中,我重写方法onResume()
并且在此函数中不执行任何操作。
代码:
@Override
protected void onResume() {
Log.i(TAG, "onResume");
}
当然,当我尝试运行它时,这段代码会在Android上崩溃。 但是,当我运行第二个版本时,稍作修改。
代码:
@Override
protected void onResume() {
super.onStart();
Log.i(TAG, "onResume");
}
但是现在,应用程序可以正确运行并显示我的简单活动。当我用super.onStart()
,super.onCreate(null)
,super.onRestart()
,super.onStop()
替换super.onDestroy()
时,应用仍然可以投放。
这是我的活动。
public class MainActivity extends Activity {
private static String TAG = "LifeCycle " + MainActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onResume() {
super.onStart();
Log.i(TAG, "onStart");
}
}
那么,任何人都能解释为什么会发生这件事吗?为什么应用程序在我这样做时仍能正常工作?
答案 0 :(得分:0)
逻辑上,它只是超级方法调用。如果你从onResume()调用onStart(),从技术上来说它是正确的,但它是随机调用,并且违反了Activity生命周期。
答案 1 :(得分:0)
创建活动时,您可以扩展父类活动。您可以通过长按鼠标滚轮按钮来查看父活动类。如果你可以看到,你实际上是从你的子类发送视图到 父类,它将启动你的活动,是的,我知道android将调用你的父类的onStart方法而不是你的sublcass。这对我们来说是一个明确的观点。如果你想知道活动生命周期是如何工作的,那很简单。首先当你启动你的应用程序onCreate方法被调用然后onStart被调用n然后当你的应用程序在前台时OnResume被调用然后一旦你的应用程序在后台onPause被调用,如果你按下后退按钮onDestroy将被调用。如果您想了解完整的生命周期,可以在devlopers.android.com上查看。谢谢。我希望这是有帮助的