Android 中this、getContext()、getApplicationContext()、getApplication()、getBaseContext() 之间的区别...
?: 知之為知之,不知為不知是知也!
?
- 使用this, 說明當(dāng)前類是context的子類,一般是activity application等;
? ? ? ? this:代表當(dāng)前,在Activity當(dāng)中就是代表當(dāng)前的Activity,換句話說就是Activity.this在Activity當(dāng)中可以縮寫為this.
? ? ? ? Activity.this的context 返回當(dāng)前activity的上下文,屬于activity ,activity 摧毀他就摧毀
?
- 使用getApplicationContext 取得的是當(dāng)前app所使用的application,這在AndroidManifest中唯一指定。意味著,在當(dāng)前app的任意位置使用這個函數(shù)得到的是同一個Context;
? ? ? ? getApplicationContext(): 返回應(yīng)用的上下文,生命周期是整個應(yīng)用,應(yīng)用摧毀,它才摧毀。
?
- 使用getContext獲取的是當(dāng)前對象所在的Context, Context通常翻譯成上下文,我通常當(dāng)成場景來理解。
?
- getApplication():andorid 開發(fā)中共享全局?jǐn)?shù)據(jù);
?
- getBaseContext() 返回由構(gòu)造函數(shù)指定或setBaseContext()設(shè)置的上下文
?
我們在平時的開發(fā)中,有時候可能會需要一些全局?jǐn)?shù)據(jù),來讓應(yīng)用中得所有Activity和View都能訪問到,大家在遇到這種情況時,可能首先會想到自己定義一個類,然后創(chuàng)建很多靜態(tài)成員,不過andorid已經(jīng)為我們提供了這種情況的解決方案:在Android中,有一個名為Application的類,我們可以在Activity中使用getApplication(),方法來獲得,它是代表我們的應(yīng)用程序的類,使用它可以獲得當(dāng)前應(yīng)用的主題,資源文件中的內(nèi)容等,這個類更靈活的一個特性就是可以被我們繼承,來添加我們自己的全局屬性。
?
參考:
Android?中this、?getApplicationContext()、getApplication()之間的區(qū)別_夢之星辰-懷_新浪博客
http://blog.sina.com.cn/s/blog_a72ec20c0101coso.html
android 中 涉及到context的時候this和this.getApplictionContext的區(qū)別 - liuyun - ITeye技術(shù)網(wǎng)站
http://liuyun025.iteye.com/blog/1139970
?
總結(jié)
以上是生活随笔為你收集整理的Android 中this、getContext()、getApplicationContext()、getApplication()、getBaseContext() 之间的区别...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2015年9月30
- 下一篇: Linux运维 第三阶段 (十八) va