2
@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

4 回答 4

0

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

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

当用户离开您的活动时,系统会调用 onStop() 来停止活动。因此,调用 onStop 方法来停止活动是必不可少的。但是当你重写 onStop 方法来实现你自己的功能时,如果你不调用超类的 onStop 方法,那么 onStop 的常见任务将无法完成。这就是为什么你必须调用它

于 2013-05-17T05:46:46.553 回答
0

坦率地说,Android SDK 的工作方式非常丑陋。这个 SDK 中可能不存在一些反模式,但我还没有找到。

您必须对各种 Activity/Fragment/Service 等类进行子类化才能创建应用程序,然后覆盖各种方法以执行任何有用的操作,然后需要在所有生命周期方法上调用该方法的超类实现,以及之前的所有生命周期方法无论你想做什么。

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

于 2013-05-17T05:53:05.440 回答
0

它是派生类的方法,所以必须使用super调用,否则会抛出异常详细解释阅读这些链接

活动生命周期

安卓指南

于 2013-05-17T05:54:16.417 回答
0

As onStop() is android's Activity life cycle method' and super class provides implementation for onStop() method, android calls this method when an Activity going to stop, when you override onStop() method in your class, if you skip super.onStop() this will cause to not to run actual implementation of onStop method which is provided by android, and many house cleaning stuff which were should be performed will never be run, thats why android forces you to if you override onStop() you must call super.onStop(). Forcing to write super.onStop() seems anti pattern, there could be other ways too.

于 2013-05-17T06:03:48.757 回答