最近项目要上线,检查了一下手机中关于项目的各种日志,突然发现使用WebView的Activity或者Fragment在退出的时候就报出如标题上的错误,但是我并没有在项目中使用TextToSpeech这个玩意。
然后参考stackoverflow上的解答http://stackoverflow.com/questions/18038772/leaked-window-exception-even-though-no-service-is-used发现mWebView.getSettings().setJavaScriptEnabled(true)代码会使webview中的TextToSpeech这个组件持有Activity的引用,这个组件的生命周期应该是比Activity的生命周期要长,所以它持有Activity的引用会造成内存泄露,dump一下内存发现,如下



又参考这位仁兄的方法http://blog.csdn.net/shareus/article/details/51742799,如下

发现logcat中在activity快进快出的时候尼玛仍然会报上述错误.。
按照stackoverflow上的说法,我传个activity的引用导致内存的泄露,那不传activity的引用,所以有了下面


也不知道还有没有更好的解决方案,有的话告诉小弟一声。
网友评论