如果子类Activity复写了onWindowFocusChange方法,其对应的methodId就不为-1了;

private class CollectMethodNode extends MethodNode {
private String className;
private boolean isConstructor;


CollectMethodNode(String className, int access, String name, String desc,
String signature, String[] exceptions) {
super(Opcodes.ASM5, access, name, desc, signature, exceptions);
this.className = className;
}

@Override
public void visitEnd() {
super.visitEnd(http://www.amjmh.com);
TraceMethod traceMethod = TraceMethod.create(0, access, className, name, desc);

if ("<init>".equals(name) /*|| "<clinit>".equals(name)*/) {
isConstructor = true;
}
// filter simple methods
//忽略空方法、get/set方法、没有局部变量的简单方法,
if ((isEmptyMethod() || isGetSetMethod() || isSingleMethod())
&& mTraceConfig.isNeedTrace(traceMethod.className, mMappingCollector)) {
mIgnoreCount++;
mCollectedIgnoreMethodMap.put(traceMethod.getMethodName(), traceMethod);
return;
}

//不在黑名单中的方法加入待插桩的集合;在黑名单中的方法加入ignore插桩的集合
if (mTraceConfig.isNeedTrace(traceMethod.className, mMappingCollector) && !mCollectedMethodMap.containsKey(traceMethod.getMethodName())) {
traceMethod.id = mMethodId.incrementAndGet();
mCollectedMethodMap.put(traceMethod.getMethodName(), traceMethod);
mIncrementCount++;
} else if (!mTraceConfig.isNeedTrace(traceMethod.className, mMappingCollector)
&& !mCollectedBlackMethodMap.containsKey(traceMethod.className)) {
mIgnoreCount++;
mCollectedBlackMethodMap.put(traceMethod.getMethodName(), traceMethod);
}

}
}

 

posted @ 2019-08-02 21:01  李艳艳665  阅读(134)  评论(0编辑  收藏  举报