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

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

谢谢你〜

最佳答案

该模式如下所示:

private boolean superCalled;

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

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


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

关于android - android如何获取“android.app.SuperNotCalledException”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13785860/

10-12 00:20