Android的是如何落实SuperNotCalledException的检查?(How did A

2019-09-21 00:31发布

Activity类,Android提供运行时执行的是super() 必须调用被替代的生命周期回调方法。 如果你忘记了你这样做,它抛出SuperNotCalledException。

究竟这怎么具体实现在Android? 请点我实际的代码实现,如果可能的。

Answer 1:

看起来他们在中超的方法清除标志并检查其设置 :

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


Answer 2:

作为一个侧面说明机器人刚刚宣布了新的注释,@CallSuper那滴你只要当它被overidden超级不叫的@CallSuper批注的方法警告。

更多细节:

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



文章来源: How did Android implement the checks for SuperNotCalledException?