Rumah > Soal Jawab > teks badan
public CompassView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
例如我这一个,默认就是调用这个构造方法。 我自己写的一个view的构造方法。context表示activity的上下文,attrs表示你在xml中配置的属性,例如宽,高等
context表示activity的上下文,,,这个上下文是什么意思?用些作文的来理解不通啊...求大牛形象理解一下
申请关闭
PHP中文网2017-04-17 14:41:20
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,很容易造成内存泄露。