getApplicationContext()返回的是整个应用Application的context,生命周期是整个应用的生命周期,Application摧毁时它才摧毁。
Activity.this 返回的是该Activity的context,生命周期与该Activity相同,Activity摧毁时,它便被摧毁。
getBaseContext() 返回由构造函数指定或setBaseContext()设置的上下文(谷歌工程师不建议使用)。
1:当Application的Context能搞定的情况下,并且生命周期长的对象,优先使用Application的Context。
2:不要让生命周期长于Activity的对象持有到Activity的引用。
3:尽量不要在Activity中使用非静态内部类,因为非静态内部类会隐式持有外部类实例的引用,如果使用静态内部类,将外部实例引用作为弱引用持有。