Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-活动生命周期-超级类_Java_Android_Eclipse - Fatal编程技术网

Java Android-活动生命周期-超级类

Java Android-活动生命周期-超级类,java,android,eclipse,Java,Android,Eclipse,这是活动生命周期的代码。我不明白在这里使用super.onStop()的目的是什么?超类方法是什么意思?如果你的方法重写了它的超类的一个方法,你可以通过使用关键字super来调用被重写的方法 因此,通过调用super.onStop()可以调用基类(活动)的onStop方法 当用户离开您的活动时,系统调用onStop()停止该活动。因此,必须调用onStop方法来停止活动。但是,当您重写onStop方法以在其中实现您自己的特性时,如果您不调用super类的onStop方法,那么onStop的常见任

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

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

因此,通过调用super.onStop()可以调用基类(活动)的onStop方法


当用户离开您的活动时,系统调用onStop()停止该活动。因此,必须调用onStop方法来停止活动。但是,当您重写onStop方法以在其中实现您自己的特性时,如果您不调用super类的onStop方法,那么onStop的常见任务将无法完成。这就是为什么你不得不称之为Android SDK的工作方式非常坦率。。。丑得要命。这个SDK中可能存在一些不存在的反模式,但我还没有找到

您必须对各种活动/片段/服务等类进行子类化,以创建一个应用程序,然后重写各种方法以执行任何有用的操作,然后需要在所有生命周期方法上调用该方法的超类实现,无论是在您要执行的操作之外还是之前


小贴士:别想了,去做吧。检查文档(如果存在的话)并始终首先调用super.onXXX,无论它在哪里指定。

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

由于
onStop()
是android的活动生命周期方法,并且super类为
onStop()
方法提供了实现,当
活动停止时,当您在类中重写onStop()方法时,如果您跳过
super.onStop(),android会调用此方法
这将导致不运行android提供的
onStop
方法的实际实现,许多本应执行的房屋清洁工作将永远不会运行,这就是为什么android强制您在覆盖onStop()时必须调用
super.onStop()

强制编写
super.onStop()
似乎是反模式的,也可能有其他的方法。

很多答案都是这样的。。。您应该先搜索它们……我可以看到一条注释:
super.onStop();//总是先调用超类方法
。是的@PareshMayani,但我不明白为什么我们需要先调用超类方法?@user2227093,这不是每次都必须调用的。但在这里您覆盖了超类的方法,所以它将调用。@PareshMayani ok。谢谢我明白了。
@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.
        );
}