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()");
}
}