0
点赞
收藏
分享

微信扫一扫

fragment中progressDialog绑定,getContext还是getActivity,因为bug引入


我们的项目继承公司即时通讯产品架构,在首页是我们自己的fragment,在这里有我们自己的登录,但是这时候触发即时通讯产品的升级,我们的依附activity被干掉,

progressDialog.show(),崩溃,解决办法就是在fragment的onStop方法内dismiss:中间引发对dialog的绑定思考:

progressDialog绑定mActivity(注:就是传activity的上下文getActivity方法获得)和getContext()都可以运行,我们应该绑定哪个?应该绑定在mActivity上,也就是产品的MainPage页

原因:


getContext()获得的是程序的application实例,一个app只有一个application,只有程序进程杀掉才结束,如果dialog绑定在它上面


会获得超长的生命周期,当它显示后的页面(也就是activity)finish掉,它扔存在且别的页面无法杀死它,这样就造成程序的内存泄漏。


所以应该绑定在显示的activity上。


那为什么绑定在activty会造成bug,因为dialog虽然依赖activity这个view,但是dialog的层级是window级别,activity的finish无法直接


把dialog杀掉,所以我们在activty被干掉的生命周期主动关掉dialog就可以了。







举报

相关推荐

0 条评论