您的位置:首页 > 移动开发 > Android开发

Android Context

2011-06-13 11:40 429 查看
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的销毁,导致内存泄漏。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息