Android是如何实现SuperNotCalledException的检查的?

时间:2012-08-08 14:53:32

标签: android oop inheritance super android-lifecycle

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

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

2 个答案:

答案 0 :(得分:1)

看起来像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()");
    }
}

答案 1 :(得分:0)

作为一个侧面注释的android刚刚宣布了一个新的注释,@ CallSuper会在超级被覆盖时没有调用@CallSuper注释方法时向你发出警告。

更多详情:

http://tools.android.com/tech-docs/support-annotations