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放在哪里,就代表谁的指针
根据控件的生命周期决定传入相应的生命周期参数