自己简单记录一下this、getBaseContext()、getApplication()、getApplicationContext()的区别。如下是示例代码:
package blog.zhao.tudu.mytest;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("TTTT", "this:" + this.toString());
Log.d("TTTT", "getBaseContext():" + this.getBaseContext().toString());
Log.d("TTTT", "getApplication():" + this.getApplication().toString());
Log.d("TTTT", "getApplicationContext():" + this.getApplicationContext().toString());
}
}
运行后,打印的Log如下:
04-08 09:21:10.061 2087-2087/blog.zhao.tudu.mytest D/TTTT: this:blog.zhao.tudu.mytest.MainActivity@8d11109
04-08 09:21:10.061 2087-2087/blog.zhao.tudu.mytest D/TTTT: getBaseContext():android.app.ContextImpl@d707f6c
04-08 09:21:10.061 2087-2087/blog.zhao.tudu.mytest D/TTTT: getApplication():android.app.Application@8a0863f
04-08 09:21:10.061 2087-2087/blog.zhao.tudu.mytest D/TTTT: getApplicationContext():android.app.Application@8a0863f
可见:
this获取到的是当前Activity的对象;
getBaseContext()获取到的是ContextImpl;
getApplication和getApplicationContext获取到的均为同一个Application对象。