您的位置:首页 > 其它

为什么要用getBaseContext()方法代替this

2015-10-21 14:18 423 查看
如下面的例子

Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?>arg0, View arg1, int arg2, long arg3){
Toast.makeText(getBaseContext(),"SELECTED", Toast.LENGTH_SHORT).show(); //this line
}


1.
getApplicationContext
()
方法在应用程序要被摧毁时,返回整个应用程序生命周期的应用上下文。

2.
this
应用上下文返回activity的当前上下文,属于activity。当它被摧毁时,activity也被摧毁。但是在你的事例中它是指Spinner实例,

因为我们在o
nItemSelected(AdapterView<?>arg0,
View arg1, int arg2, long arg3)
方法中使用它。这个方法是来自Spinner类,而Spinner从
AdapterView.OnItemSelectedListener
接口中继承这个方法。

3.
getBaseContext()
ContextWrapper
中的方法。

简单的解释:

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

Activity.this的context 返回当前activity的上下文,属于activity ,activity 摧毁他就摧毁

getBaseContext() 返回由构造函数指定或setBaseContext()设置的上下文
本文综合网上的内容
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: