android之getApplicationContext

来源:互联网

getApplicationContext()

返回应用的上下文,生命周期是整个应用,应用摧毁它才摧毁。

In various bits of Android code I've seen:

public class MyActivity extends Activity {
    public void method() {
       mContext = this;    // since Activity extends Context
       mContext = getApplicationContext();
       mContext = getBaseContext();
    }
}

However I can't find any decent explanation of which is preferable, and under what circumstances which should be used.

Pointers to documentation on this, and guidance about what might break if the wrong one is chosen, would be much appreciated.

 

Activity.this 返回当前activity的上下文,生命周期只是它所在的Activity,activity 摧毁他就摧毁

getBaseContext()
返回由构造函数指定或setBaseContext()设置的上下文。

this.getApplicationContext()

获取的是这个应用程序的Context(associated with the Applicaiton),Activity.this获取的是这个Activity的Context,这两者的生命周期是不同的,

前者的生命周期是整个应用的创建到销毁,后者的生命周期只是它所在的Activity(创建到销毁)。

一定要搞清楚生命周期,比如有一个全局的数据操作类,用到了context, 这个时候就要用到getApplicationContext, 而不是用ACtivity,

这就保证了数据库的操作与activity无关。

发表评论