在butterKnife自动生成的代码(XXX_ViewBinding)中,里面有这样一段代码:
view.setOnClickListener(new DebouncingOnClickListener() { @Override public void doClick(View p0) { target.onViewClicked(p0); } });
该DebouncingOnClickListener为抽象类,没有用静态内部类去继承实现抽象方法,而是用了匿名函数直接new出来,这样写就会导致内存泄漏,所以butterKnife虽然给我们带了方便,但是里面也有内存泄漏的现象,根据需求谨慎使用各种框架。