android中使用WebView报出错误 Activity has leaked ServiceConnection android.speech.tts.TextToSpeech$Connecti...

最近项目要上线,检查了一下手机中关于项目的各种日志,突然发现使用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一下内存发现,如下

22113009_iai8.png

发现这个Activity在我反复的进出进出居然有10个,而且在我触发多次gc内存回收之后,这10个Activity的仍然没有销毁,按照上述stackoverflow的解决方案,在onDestroy方法中执行如下操作

22113009_OmeU.png

然而并没有什么卵用,还有一种解决方案就是说在代码中动态的生成webview,如下

22113009_vypA.png

这个方法起作用,但是改动太大,不可取.

 

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

22113009_XtqX.png

发现logcat中在activity快进快出的时候尼玛仍然会报上述错误.。

按照stackoverflow上的说法,我传个activity的引用导致内存的泄露,那不传activity的引用,所以有了下面

22113009_bxCZ.png

,然后没报错了,尝试快进快出activity,产生了10个实例,但是gc后这10个activity的实例会被回收,但还是建议在onDestroy方法中加入上面这位仁兄这段代码

22113009_n3bL.png

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

转载于:https://my.oschina.net/huqiji/blog/864551

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值