super.onStop()有什么意义?

时间:2014-04-07 23:15:04

标签: java android crash superclass

我开始学习如何在Android上创建应用。我已经掌握了一些关于Java的知识,现在我正在尝试一些活动事件。

我知道如何使用onCreateonCreateOptionsMenu,现在我正在测试onStop

@Override
public void onStop(){
    //a function that simply creates and return an AlertDialog.Builder object
    displayPopup("Event", "Stopped", "OK").show();
}

我认为这样可行,因为在编译时没有错误。但是当我尝试退出应用程序时,我希望会出现一个弹出对话框,但应用程序只是崩溃了。事实证明,我需要一个额外的线来使它工作:

super.onStop();

它没有做任何事情(至少我看不到任何改变)而且它有点无用,但如果没有这一行,应用程序就会一直崩溃。

任何帮助都会很棒,谢谢。

3 个答案:

答案 0 :(得分:4)

它调用父onStop()类中的Activity方法。当您查看源代码时,您会发现它会执行一些内部管理。

protected void onStop() {
    if (DEBUG_LIFECYCLE) Slog.v(TAG, "onStop " + this);
    if (mActionBar != null) mActionBar.setShowHideAnimationEnabled(false);
    getApplication().dispatchActivityStopped(this);
    mTranslucentCallback = null;
    mCalled = true;
}

答案 1 :(得分:2)

您的自定义活动扩展了活动类型。 onStop()方法是超类活动的一部分。如果您不调用super.onStop(),则永远不会调用Activity类的实现,只会执行您的实现。这意味着崩溃,因为Activity类中的onStop()方法执行必须调用的清理。

onStop()上的Android参考:http://developer.android.com/reference/android/app/Activity.html#onStop()

答案 2 :(得分:0)

你的类是一个活动子类(扩展Activity),巫婆意味着你必须调用活动母类的超级方法,以获取有关super.onstop()细节的更多信息,你可以查看源代码