首页 > android中一些术语:XX的上下文,这个上下文怎么理解?

android中一些术语:XX的上下文,这个上下文怎么理解?

public CompassView(Context context, AttributeSet attrs) {

    super(context, attrs);
    init();
}

例如我这一个,默认就是调用这个构造方法。 我自己写的一个view的构造方法。context表示activity的上下文,attrs表示你在xml中配置的属性,例如宽,高等

context表示activity的上下文,,,这个上下文是什么意思?用些作文的来理解不通啊...求大牛形象理解一下


与已有问题重复:如何理解android中的上下文对象(Context对象)?

申请关闭


当前的执行环境。
function a(){
...
...
...
}
函数a的上下文就是函数内部的所有代码。或是理解为a的环境。


Context的作用是用来访问全局信息的,比如每个UI组件的构造函数都是要传入一个Context的。
拿TextView来打比方:

TextView textView = new TextView(this);
textview.setText(R.string.balabala);

这里实例化的时候传入了一个this,这个值就是一个Context。
这里设置了一个在strings.xml文件中预定义的字符串,setText(int resid)函数的源码中是这样的:

    public final void setText(int resid) {
        setText(getContext().getResources().getText(resid));
    }

注意这里面使用了getContext()函数去获取全局信息资源,并通过id筛选出自己想要的资源。这里的这个getContext()获取到的上下文,就是我们在实例化TextView时传进去的Context。


所以,Context是用来协助对象访问全局信息的。
使用的时候要尤其注意,Context传出去,使用完要及时释放掉,因为Context是有一个引用抓取着Activity的,如果Activity生命周期结束后还没有及时释放掉Context,很容易造成内存泄露。

【热门文章】
【热门文章】