安卓開發(fā)之全局獲取Context

某些情況下,我們并不能方便的獲取上下文環(huán)境,因?yàn)槲覀兯{(diào)用的函數(shù)或者類中有時并不存在相關(guān)的參數(shù),放心啦,不要尬,安卓為我們提供了一個Applocation類,以便于我們?nèi)ス芾沓绦騼?nèi)的一些全局的狀態(tài)信息,比如說全局Context。
??首先,我們需要定制一個自己的Applocation類去繼承Applocation。示例如下:

public class MyApplication extends Applocation {

    private static Context context;

    @Override
    public void onCreate() {
        super.onCreate();
        context = getApplicationContext();
    }

    public static Context getContext() {
        return context;
    }

}  

很簡單吧,就是重寫了父類的onCreate方法,利用函數(shù)getApplicationContext()獲取了一個應(yīng)用程序級別的Context,然后提供了一個靜態(tài)的getContext方法將上述context返回。
程序啟動的時候會初始化Application類,我們要告知系統(tǒng)修改其默認(rèn)做法,轉(zhuǎn)而啟動我們自定義的MyApplication類。具體來說就是在AndroidManifest.xml文件的<application>標(biāo)簽下進(jìn)行指定。代碼如下:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    ......
    <application
        android:name="com.example.test.MyApplication" 
        ......>
    ......
    </application>
</manifest>

需要注意的是,我們需要在該標(biāo)簽中輸入你所開發(fā)項(xiàng)目的完整的包名。
??此外,《第一行代碼》這本書中提到了一個很重要的問題:由于每個項(xiàng)目只能有一個Application,當(dāng)我們使用第三方開源項(xiàng)目如Litepal等對application的配置有需求的資源時,就不能使用上述方法重復(fù)配置了,錯誤的示范如下:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    ......
    <application
        android:name="com.example.test.MyApplication" 
        android:name="org.litpal.LitePalApplication"
        ......>
    ......
    </application>
</manifest>

辣么,要腫么做呢?很簡單,在我們自定義的Application中加入對litepal的支持就好了,示例如下:

public class MyApplication extends Applocation {

    private static Context context;

    @Override
    public void onCreate() {
        super.onCreate();
        context = getApplicationContext();
        LitePalApplication.initialize(context);
    }

    public static Context getContext() {
        return context;
    }

}  

這樣一來,可以實(shí)現(xiàn)同樣的配置效果,又不會發(fā)生沖突哈,棒棒噠!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,062評論 25 709
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,275評論 6 342
  • 女孩 你舉著花兒從這個世界走過 那碩大的白色花朵 仿佛一副盾牌 把喧囂擋在門外 女孩 我猜你一定有著 泉水般澄澈的...
    初見___閱讀 365評論 8 11
  • 很多小伙伴每天使用最多的聊天工具就是微信了,確實(shí)微信極大地方便了大家的生活,不用出門,通過朋友圈就可以了解天下事。...
    喇叭兔閱讀 609評論 0 0

友情鏈接更多精彩內(nèi)容