我很好奇android如何检测我是否super.onCreate
在我的方法中调用(或其他一些方法)onCreate
。
我猜它使用了一个标志并boolean mCalled;
在 Activity.class 中看到了一个标志,但不确定它是否用于此检测。如果是这样,那么它让我感到困惑,因为有许多超方法需要覆盖,但这些方法只有一个“mCalled”标志来检测是否调用了超方法,这似乎是不可能的。
谢谢回复~
该模式的工作原理如下:
private boolean superCalled;
private someFunction(...) {
superCalled = false;
someMethodThatRequiresSuperToBeCalled(...);
if (!superCalled) {
throw new SuperNotCalledException();
}
}
protected void someMethodThatRequiresSuperToBeCalled(...) {
superCalled = true;
}
如果您仔细阅读代码,您会发现框架一次仅将标志用于一种方法。因此,即使有许多方法需要调用super.whatever()
,它们也可以共享相同的标志。