首頁  >  問答  >  主體

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

public CompassView(Context context, AttributeSet attrs) {

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

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

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


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

申请关闭

PHP中文网PHP中文网2765 天前642

全部回覆(2)我來回復

  • PHP中文网

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

    回覆
    0
  • 阿神

    阿神2017-04-17 14:41:20

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

    回覆
    0
  • 取消回覆