this、getBaseContext()、getApplication()、getApplicationContext()的区别

    自己简单记录一下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对象。

猜你喜欢

转载自blog.csdn.net/qq_21154101/article/details/89111663