内存泄漏之EventBus

项目中使用了EventBus之后,不停地出现报告关于EventBus内存泄漏的Leaks
反复检查了代码,发现EventBus的注册已经解绑都是正确的,一开始也觉得这个内存泄漏地莫名其妙。
泄漏大概说的是,EventBus持有了某个Activity或者Fragment的对象,这个对象泄漏了。

后面我梳理了一下场景:
导航页过去之后,进入多个Fragment切换的主界面(EventBus有注册在这里),由于用户未登录,只要有操作,就会跳转到登录界面,从登录界面登录成功返回之后,都会出现内存泄漏的问题。

经过排查,发现是由于主界面HomeActivity的启动模式引起的。HomeActivity的启动模式是Standrad,每次都会新建一个实例,应该是由于每次都新建一个HomeActivity实例,而没有将上一个HomeActivity的实例给消除掉。

解决方案:
HomeActivity采用SingleInstance模式,确保只有一个实例,不会被重复创建。当然采用SingleInstance引发的代码层面的问题这里就不展示了,根据具体要求修改就好了。

猜你喜欢

转载自blog.csdn.net/ckwccc/article/details/79867604