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就可以了。

参考:
Android Context上下文
http://blog.csdn.net/lmj623565791/article/details/40481055
关于getContext()、getApplication()、getApplicationContext()、getActivity()的区别
http://blog.csdn.net/wpj1119245135/article/details/51150356
Android使用application总结
http://blog.csdn.net/renguichao/article/details/7667245

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值