Android ApplicationContext
1、Context
Context是Android开发中最基础的类,Application、Activity、Service 都是Context的子类;
从Android系统的角度来理解:Context是一个场景,代表一种与操作系统的交互工程;
从程序的角度上来理解:Context是一个抽象类,Application、Activity、Service都是该类的实例。
2、ApplicationContext
在实现功能时,如果是在Activity中,一般直接通过this.进行传递,当在匿名内部类的时候,因为this不能用,需要写XXXActivity.this,很多人直接写 getApplicationContext,哪XXXActivity.this和getApplicationContext有什么区别呢?
例如下面的代码
package com.programmer.example.loginactivity
import android.context.Contect
public class loginActivity {
private static loginActivity sInstance;
private Context sContext;
private loginActivity(Context context) {
this.sContext = context;
}
public static synchronised loginActivity getInstance(Context context) {
if (sInstance == null) {
sInstance = new loginActivit
y(context);
}
return sInstance;
}
通过上面的例子可以看出,很多时候为了方便,在某个Activity中直接通过this.传递,但是,在传递的这个类中sInstance是一个static且强引用的,在其内部引用一个Activity作为Context的话,只有项目运行,就没有办法进行内存回收,而Activity生命周期很长,所以会造成内存泄漏。