1

我很好奇android如何检测我是否super.onCreate在我的方法中调用(或其他一些方法)onCreate

我猜它使用了一个标志并boolean mCalled;在 Activity.class 中看到了一个标志,但不确定它是否用于此检测。如果是这样,那么它让我感到困惑,因为有许多超方法需要覆盖,但这些方法只有一个“mCalled”标志来检测是否调用了超方法,这似乎是不可能的。

谢谢回复~

4

1 回答 1

3

该模式的工作原理如下:

private boolean superCalled;

private someFunction(...) {
    superCalled = false;
    someMethodThatRequiresSuperToBeCalled(...);
    if (!superCalled) {
        throw new SuperNotCalledException();
    }
}

protected void someMethodThatRequiresSuperToBeCalled(...) {
    superCalled = true;
}

如果您仔细阅读代码,您会发现框架一次仅将标志用于一种方法。因此,即使有许多方法需要调用super.whatever(),它们也可以共享相同的标志。

于 2012-12-09T08:34:58.813 回答