android中一些术语:XX的上下文,这个上下文怎么理解?
PHP中文网
PHP中文网 2017-04-17 14:39:20
0
2
683

public CompassView(Context context, AttributeSet attrs) {

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

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

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


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

申请关闭

PHP中文网
PHP中文网

认证高级PHP讲师

全部回覆(2)
Ty80

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,很容易造成記憶體外洩。

阿神

目前的執行環境。
function a(){
...
...
...
}
函數a的上下文就是函數內部的所有程式碼。或是理解為a的環境。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板