getApplicationContext()返回的是整個應用Application的context,生命周期是整個應用的生命周期,Application摧毀時它才摧毀。
Activity.this 返回的是該Activity的context,生命周期與該Activity相同,Activity摧毀時,它便被摧毀。
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代替,因為new AlertDialog.Builder(this) 中的this返回的是整個Activity對象對應context,而如果在onClick函數中使用this返回的是AlertDialog的context。
------------------------------------------------------------------------------------------------------------------------------------
AlertDialog的對象是依賴於view的,view於具體的Activity相關聯,Activity摧毀時,view就被摧毀,
AlertDialog dialog = new AlertDialog.Builder(this).
this放在哪里,就代表誰的指針
根據控件的生命周期決定傳入相應的生命周期參數