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