Android是如何实现SuperNotCalledException检查的?

Android是如何实现SuperNotCalledException检查的?,android,oop,inheritance,super,android-lifecycle,Android,Oop,Inheritance,Super,Android Lifecycle,在Activity类中,Android提供了运行时强制,用于覆盖生命周期回调方法的super()。如果您忘记这样做,它将抛出SuperNotCalledException 具体是如何在Android上实现的?如果可能的话,请告诉我实际的源代码实现。看起来它们: 作为旁注,android刚刚发布了一个新的注释@CallSuper,当@CallSuper注释方法被覆盖时,如果没有调用该超级,就会向您发出警告 更多详情: 我想知道这是否就是为什么调用错误的super.x方法不会导致应用程序崩溃的原因?

Activity
类中,Android提供了运行时强制,用于覆盖生命周期回调方法的
super()
。如果您忘记这样做,它将抛出SuperNotCalledException

具体是如何在Android上实现的?如果可能的话,请告诉我实际的源代码实现。

看起来它们:


作为旁注,android刚刚发布了一个新的注释@CallSuper,当@CallSuper注释方法被覆盖时,如果没有调用该超级,就会向您发出警告

更多详情:


我想知道这是否就是为什么调用错误的super.x方法不会导致应用程序崩溃的原因?我不确定这是否已修复,但之前您可以在onStart中调用super.onResume,它不会抛出该异常…这是有意义的;只有一面旗。由于这是为了防止人们忘记调用
super()
我无法想象有人会无意中调用另一个
super()
方法。
final void performStart() {
    mCalled = false;
    mInstrumentation.callActivityOnStart(this);
    if (!mCalled) {
        throw new SuperNotCalledException(
            "Activity " + mComponent.toShortString() +
            " did not call through to super.onStart()");
    }
}