getApplicationContext()、getBaseContext()和Activity.this區別

普通的Android應用程序中,通常有兩種Context,Application和Activity,也即getApplicationContext()和Activity的this。

getApplicationContext() 返回應用的上下文,生命週期對應整個應用。若應用銷燬,context銷燬。【總體來說,使用全局應用程序Context可能是最好的】

Activity.this的context 返回當前activity的上下文,生命週期對應Activity。若activity銷燬(比如橫豎屏切換等情況),context也會被銷燬多次。

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

public Dialog displayDialog(int choice)
    {
    switch(choice){
    case 0:
    AlertDialog aDialog = new AlertDialog.Builder(this)
    .setIcon(R.drawable.ic_launcher)
    .setTitle("Hello World")
    .setPositiveButton("OK", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface arg0, int arg1) {
Toast.makeText(getBaseContext(), "OK clicked", Toast.LENGTH_SHORT).show();
}
}).......
這裏getBaseContext()返回的是AlertDialog構造函數指定的context,此處不能用this代替,因爲上面的this返回的是整個Activity對象對應context,而如果在onClick函數中使用this返回的是AlertDialog的context。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章