【一】Context的作用:訪問全局信息
十年的臨海網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調整臨海建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)公司從事“臨海網(wǎng)站設計”,“臨海網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
Context是訪問全局信息的接口,比如說應用程序的資源(圖片資源、字符串資源、其他資源...),
所以一些常用組件就會繼承Context,目的就是為了訪問資源,比如說Activity以及將要學習的Service。
創(chuàng)建項目來看下如何通過Context進行資源的訪問。
public class MainActivity extends Activity{ private TextView tv; @Override protected void onCreate(Bundle saveInstanceState){ super.onCreate(saveInstanceState); tv = new TextView(this); // 這里傳入?yún)?shù)必須有一個Context,因為這個TextView也需要訪問一些資源、全局信息 // Activity也是Context的子類,所以可以傳入this tv.setText("HelloAndroid"); //也可通過 R.id.hello_world 訪問string.xml中的字符串資源 setContentView(tv); } }
通過查看setText()方法的源碼:
setText(int resid){setText(getContext().getResources().getText(resid));}
首先通過getContext()獲取與它相關的Context對象,
也就是TextView所保留引用(傳入的那個參數(shù))的Context對象,
也就是MainActivity的實例;
然后通過getResources()獲取當前程序的資源實例,
再通過getText(),給它一個id就可以返回資源的字符串了。
這就是這個方法的內(nèi)部實現(xiàn)。
也就是Android中,如果想訪問全局信息,必須通過Context。
除了可以獲取字符串,還能獲取其它資源,例如圖片:
ImageView iv = new ImageView(); iv.setImageResource(R.mimap.ic_launcher); setContentView(iv);
【二】Application的用途
很多情況下,我們需要在多個組件之間進行數(shù)據(jù)的共享,Android為我們提供了一種機制。
Context可以作為全局信息共享的橋梁,所以我們可以用Context進行信息的共享。
我們可以創(chuàng)建一個類,叫做App,繼承于Application。
public class App extends Application{ }
然后打開AndroidManifest.xml文件,
添加斜體字中的信息,
通過這種方式,我們就自定義了Android的Application ,
而Application才是真正的全局上下文對象。
在MainActivity中可以通過getApplicationContext()方法,
就可以獲得Application全局對象。