我們做安卓開發(fā),時時都在和Context打交道,那么Context到底是什么?有什么作用?如何與Application,Activity,Service等實例發(fā)生聯(lián)系的?等等

Context是什么?

Context的字面意思是“上下文”,那么這個“上下文”到底指的是什么?“上”指的是什么?“下”指定的是什么?
個人的理解,有助于自己的理解的方式,不一定對,如果有更好的看法可以一塊交流學(xué)習(xí)。個人的理解,“上”指的是在APP啟動的時候,就與Context有關(guān)了,這個時候還是系統(tǒng)啟動階段,就與Context發(fā)生了聯(lián)系。
“下”指定的是在APP界面正常顯示出來以后,正常與用戶交互的過程中,可以用Context獲取資源,系統(tǒng)服務(wù)等。所以Context所謂的上下文就是承上啟下的作用。

  1. Context的類的繼承關(guān)系
    從上圖可以看到,Context只有一個實現(xiàn)類ContextImpl,Application,Service,Activity都是直接或者間接繼承了ContextWrapper,ContextWrapper中有一個變量mBase,也是個Context類型,實際是ContextImpl的對象,Application,Service,Activity所有的操作都是委托給了mBase實現(xiàn)。

  2. Context既然是承上啟下,是個上下文,和APP啟動流程有關(guān),先來看看系統(tǒng)的啟動流程和APP的啟動流程,都在一張圖里,如下:

從上圖可以看到: