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

Context是什么?

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

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

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

從上圖可以看到: