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的销毁,导致内存泄漏。
创建一个应用,创建一个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的销毁,导致内存泄漏。
相关文章推荐
- android利用Context提供的方法实现java映射
- Android中Context解析
- android XXXActivity和getApplicationContext()差别
- Android内核理解——初步理解context和activity的关系
- Can't make static reference to non-static method ( Android getApplicationContext() )
- AndroidManifest清单文件中已经声明Application的name,但getApplicationContext()获取的时候仍然空指针异常
- Android Context解析
- android获取全局context
- Android Context 使用时注意内存泄漏问题
- 避免 Android 中 Context 引起的内存泄露
- android基础--tools:context=".MainActivity"作用
- Android获取其他包的Context实例然后XX(转载)
- 【黑马Android】(18)Servlet/ServletConfig/ServletContext
- android context的别
- Android Context 上下文 你必须知道的一切
- Android源码分析-全面理解Context
- android 三类菜单(Option) (Context) (SubMenu)学习
- Android中Context具体解释 ---- 你所不知道的Context
- Android中Context详解 ---- 你所不知道的Context
- Android中Context详解 ---- 你所不知道的Context(转)