標籤:
Context執行個體個數 = Service個數 + Activity個數 + 1(Application對應的Context執行個體)
context:
1、它描述的是一個應用程式環境的資訊,即上下文。
2、該類是一個抽象(abstract class)類。
Application:
建立Application 對象時, 而且整個App共一個Application對象
getApplicationContext()返回的是你的整個Application的context,生命週期是整個Application,Application銷毀後,它才銷毀。
getBaseContext()返回由建構函式指定或者setBaseContext()設定的上下文(Google工程師不建議使用)。
所以application的生命週期就是整個程式的生命週期,程式完全退出application才銷毀。
activity與View
window,activity,和view的關係是這個樣子的:
activity中new出一個window,而window(介面)通過這個phonewindow子類來擷取一個子類執行個體。這是一種典型composite模式。再通過
phonewindow的setContentView在內部使用LayoutInflater來給Window設定View。
這段話給我們的感覺就是 activity是視窗(介面),View是顯示在視窗的布局
this和activity.this
Activity.this的context屬於Activity,生命週期與Activity相同,隨著當前的Activity.this消亡而消亡。
this是你當前對象的引用 ,this放在哪裡邊就是誰的指標,如果在Activity中就是Activity,這時等同於Activity.this;如果放在OnCliclListener()中就是OnClickListener()。
activity於activity.this的生命週期就是當前的頁面,當前頁面銷毀掉了,activity也就被銷毀,另外this指當前對象,在實際開發工程中有的需要自己指明是哪個activity的對象,要不然編譯不通過。
看下他們之間的結構圖
從這幾個圖可以看出 context是一個打的視窗(介面),這個介面的下一層級是 application 再下一層級是 activity,cointext是這幾個類的父類,
同樣的布局View是所有layout布局中控制項的父類。 它們一個管理視窗一個管理布局顯示。
1、它描述的是一個應用程式環境的資訊,即上下文。
2、該類是一個抽象(abstract class)類,Android提供了該抽象類別的具體實作類別(後面我們會講到是ContextIml類)。
對android布局和視窗的理解