Android 中this、getContext()、getApplicationContext()、getApplication()、getBaseContext() 之間的區別


 : 知之為知之,不知為不知是知也!

 

  • 使用this, 說明當前類是context的子類,一般是activity application等;

        this:代表當前,在Activity當中就是代表當前的Activity,換句話說就是Activity.this在Activity當中可以縮寫為this.

        Activity.this的context 返回當前activity的上下文,屬於activity ,activity 摧毀他就摧毀

 

  • 使用getApplicationContext 取得的是當前app所使用的application,這在AndroidManifest中唯一指定。意味着,在當前app的任意位置使用這個函數得到的是同一個Context;

        getApplicationContext(): 返回應用的上下文,生命周期是整個應用,應用摧毀,它才摧毀。

 

  • 使用getContext獲取的是當前對象所在的Context, Context通常翻譯成上下文,我通常當成場景來理解。

 

  • getApplication():andorid 開發中共享全局數據;

 

  • getBaseContext() 返回由構造函數指定或setBaseContext()設置的上下文

 

我們在平時的開發中,有時候可能會需要一些全局數據,來讓應用中得所有Activity和View都能訪問到,大家在遇到這種情況時,可能首先會想到自己定義一個類,然后創建很多靜態成員,不過andorid已經為我們提供了這種情況的解決方案:在Android中,有一個名為Application的類,我們可以在Activity中使用getApplication(),方法來獲得,它是代表我們的應用程序的類,使用它可以獲得當前應用的主題,資源文件中的內容等,這個類更靈活的一個特性就是可以被我們繼承,來添加我們自己的全局屬性。

 

參考:

Android 中this、 getApplicationContext()、getApplication()之間的區別_夢之星辰-懷_新浪博客
http://blog.sina.com.cn/s/blog_a72ec20c0101coso.html

android 中 涉及到context的時候this和this.getApplictionContext的區別 - liuyun - ITeye技術網站
http://liuyun025.iteye.com/blog/1139970

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM