本文原始出處為 http://blog.csdn.net/guolindonggld/article/details/24243059

getApplication();
getApplicationContext();
getBaseContext();
MainActivity.this;
this;
getContext();

要理解這些方法的區別,需要先理解在Android框架中,有兩種類別的Context,分別是Application Context和Activity Context:
Application Context:存在于“應用”的整個生命週期,只要應用存在,Application Context就存在,並且是唯一的。當應用被銷毀了,Application Context才被銷毀。
Activity Context:存在於“Activity”的整個生命週期,當onDestroy()執行後,Activity Context也被銷毀。

現在回到問題:
1.getApplication():雖然它返回的是Application物件,但Application類繼承自Context,所以它可以用來提供Application Context;
2.getApplicationContext():返回Application Context;
3.getBaseContext():返回Activity Context;

4.MainActivity.this:表示MainActivity物件,一般用在內部類中指示外面的this,如果在內部類直接用this,指示的是內部類本身。因為MainActivity繼承Activity,而Activity繼承Context,所以它也可以用來提供Activity Contex;
5.this:表示當前物件;當它表示MainActivity時,也可以用來提供Activity Context,原因同上。

6.getContext():這個是View類中提供的方法,在繼承了View的類中才可以調用,返回的是當前View運行在哪個Activity Context中。前面的3個方法可以在Activity中調用。

arrow
arrow

    痞客興 發表在 痞客邦 留言(0) 人氣()