什么是Context?
读过书的大家脑海里应该会有这么一个场景:
“请联系上下文,分析这句话在文中的作用。”
在于文中,我们吧上下文理解为语境,在程序中,我们可以响应的将上下文理解为:当前对象在程序中所出的一个环境,一个系统交互过程——这就是Context。
Android 应用程序在一下几种情况下会创建一个Context:
1、创建一个Application
2、创建一个Activity
3、创建一个Service
读过源码的同学应该会比较清楚Application、Activity、Service与Context的关系——即它们三个都是Context的子类。所以不难理解,不通对象的Context的生命周期会有相应的差别。Application伴随者App的整个生命周期,所以Application的Context对象也是一个贯穿整个App生命周期的Context对象,Activity,service的Context对象都与它们的生命周期相对应。
Context的那些坑
1、内存泄漏
上面的单利引用了一个Context,看这好像没什么问题,但是Context的来源是不能确定的,当MyUtil这个类被引用了,其所引用的Context就是一直被引用进而造成持有这个Context的类一直得不到释放,故会造成内存的泄漏。
一般我们可以采用一下的方法进行优化: