Android Context

Android应用(xxx extends Application)、Activity、Service都继承自Context基类,实现了Context中定义的很多接口,这些接口是在Android应用开发中会经常用到的。

创建一个应用,创建一个Activity,创建一个Service,都会创建一个Context。也就是说,每个Android应用会有不只一个的Context,一般会有很多。

Context也有生命周期,Context的生命周期正常情况下应该和对应的组件(Application、Activity...)相同。

 

问:有这么多的Context,用谁呢?

答:用Context有一些原则,根据对Context引用时间长短,选择不同生命周期的Context。Activity中一般用Activity的Context,Service中一般用Service的Context,而一般静态的(静态成员变量,静态缓存等)对Context的引用则选择生命周期长的Application Context。

 

注:有一个比较隐蔽的Context错误引用可能导致内存泄漏。

一个界面中有很多用户编辑的内容,在Activity.onDestroy()的时候需要保存。为了在保存的时候不造成用户界面阻塞,通常会新启一个Thread去完成保存操作,这个新Thread有一个对Activity Context的引用。这时,Activity.onDestroy()以后Context对象应销毁掉,但销毁的时候发现Context还有人引用,则停止对Context的销毁,导致内存泄漏。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值