在Activity
该类中,Android 提供了super()
必须为被覆盖的生命周期回调方法调用的运行时强制。如果你忘记这样做,它会抛出 SuperNotCalledException。
这具体是如何在 Android 上实现的?如果可能,请指出实际的源代码实现。
在Activity
该类中,Android 提供了super()
必须为被覆盖的生命周期回调方法调用的运行时强制。如果你忘记这样做,它会抛出 SuperNotCalledException。
这具体是如何在 Android 上实现的?如果可能,请指出实际的源代码实现。
看起来他们在超级方法中清除了一个标志并检查它是否已设置:
final void performStart() {
mCalled = false;
mInstrumentation.callActivityOnStart(this);
if (!mCalled) {
throw new SuperNotCalledException(
"Activity " + mComponent.toShortString() +
" did not call through to super.onStart()");
}
}
作为旁注,android刚刚宣布了一个新注释@CallSuper,当它被覆盖时,当@CallSuper注释方法没有调用super时,它会向您发出警告。
更多细节: