Android - 活动生命周期 - 超级

时间:2013-05-17 05:41:23

标签: java android eclipse

@Override
protected void onStop() {
super.onStop();  // Always call the superclass method first

// Save the note's current draft, because the activity is stopping
// and we want to be sure the current note progress isn't lost.
ContentValues values = new ContentValues();
values.put(NotePad.Notes.COLUMN_NAME_NOTE, getCurrentNoteText());
values.put(NotePad.Notes.COLUMN_NAME_TITLE, getCurrentNoteTitle());

getContentResolver().update(
        mUri,    // The URI for the note to update.
        values,  // The map of column names and new values to apply to them.
        null,    // No SELECT criteria are used.
        null     // No WHERE columns are used.
        );
}

这是活动生命周期的代码。我不明白在这里使用super.onStop()的目的是什么?超类方法意味着什么?

4 个答案:

答案 0 :(得分:0)

如果你的方法覆盖了它的一个超类的方法,你可以通过使用关键字super来调用被覆盖的方法。

因此,通过调用super.onStop(),您将调用基类(Activity)的onStop方法。

当用户离开您的活动时,系统会调用onStop()来停止活动。因此,必须调用onStop方法来停止活动。但是当你重写onStop方法来实现自己的特性时,如果你不调用超类的onStop方法,那么onStop的常见任务就不会完成。这就是为什么你必须打电话给这个

答案 1 :(得分:0)

Android SDK的工作方式非常坦率......丑陋如故。可能有一些反模式在此SDK中不存在但我还没有找到。

你必须继承各种Activity / Fragment / Service等类来创建一个应用程序,然后覆盖各种方法来做任何有用的事情,然后需要调用方法的超类实现生命周期方法除了你想要做的之外和之前。

提示:不要考虑它,只要这样做。检查文档(如果存在)并始终首先在指定的位置调用super.onXXX。

答案 2 :(得分:0)

它是派生类的方法,因此必须使用super调用,否则会抛出异常  有关详细说明,请阅读这些链接

Activity life cycle

Android Guide

答案 3 :(得分:0)

由于onStop()是android的Activity生命周期方法'而超类提供了onStop()方法的实现,当Activity将要停止时,当你覆盖onStop()时,android会调用此方法在你的类中的方法,如果你跳过super.onStop()这将导致不运行由android提供的onStop方法的实际实现,并且许多应该执行的清理工具永远不会运行,这就是为什么android强制你,如果你覆盖onStop(),你必须调用super.onStop()。 强制写super.onStop()似乎是反模式,也可能有其他方式。