SuperNotCalledException

SuperNotCalledException

Activity 类中,Android 为重写的生命周期回调方法提供 super() must be called 的运行时强制执行。如果您忘记这样做,它会抛出 SuperNotCalledException。

这究竟是如何在 Android 上实现的?如果可能,请指出实际的源代码实现。

最佳答案

看起来他们 clear a flag in the super methods and check that it was set :

final void performStart() {
    mCalled = false;
    mInstrumentation.callActivityOnStart(this);
    if (!mCalled) {
        throw new SuperNotCalledException(
            "Activity " + mComponent.toShortString() +
            " did not call through to super.onStart()");
    }
}

10-08 19:07