溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

【三】6.Android 中 Context 的理解及使用

發(fā)布時(shí)間:2020-08-10 19:17:05 來源:網(wǎng)絡(luò) 閱讀:645 作者:Sesedese 欄目:移動(dòng)開發(fā)

【一】Context的作用:訪問全局信息


Context是訪問全局信息的接口,比如說應(yīng)用程序的資源(圖片資源、字符串資源、其他資源...),

所以一些常用組件就會(huì)繼承Context,目的就是為了訪問資源,比如說Activity以及將要學(xué)習(xí)的Service。


創(chuàng)建項(xiàng)目來看下如何通過Context進(jìn)行資源的訪問。

public class MainActivity extends Activity{
    private TextView tv;
    
    @Override
    protected void onCreate(Bundle saveInstanceState){
        super.onCreate(saveInstanceState);
        tv = new TextView(this); // 這里傳入?yún)?shù)必須有一個(gè)Context,因?yàn)檫@個(gè)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()獲取與它相關(guān)的Context對(duì)象,

也就是TextView所保留引用(傳入的那個(gè)參數(shù))的Context對(duì)象,

也就是MainActivity的實(shí)例;

然后通過getResources()獲取當(dāng)前程序的資源實(shí)例,

再通過getText(),給它一個(gè)id就可以返回資源的字符串了。

這就是這個(gè)方法的內(nèi)部實(shí)現(xiàn)。


也就是Android中,如果想訪問全局信息,必須通過Context。

除了可以獲取字符串,還能獲取其它資源,例如圖片:

ImageView iv = new ImageView();
iv.setImageResource(R.mimap.ic_launcher);
setContentView(iv);


【二】Application的用途


很多情況下,我們需要在多個(gè)組件之間進(jìn)行數(shù)據(jù)的共享,Android為我們提供了一種機(jī)制。

Context可以作為全局信息共享的橋梁,所以我們可以用Context進(jìn)行信息的共享。

我們可以創(chuàng)建一個(gè)類,叫做App,繼承于Application。

public class App extends Application{
}


然后打開AndroidManifest.xml文件,

添加斜體字中的信息,<application android:name=".App" ……>,

通過這種方式,我們就自定義了Android的Application ,

而Application才是真正的全局上下文對(duì)象。

在MainActivity中可以通過getApplicationContext()方法,

就可以獲得Application全局對(duì)象。













 


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI