getApplicationContext(),Activity.this与getBaseContext()的区别


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放在哪里,就代表谁的指针

根据控件的生命周期决定传入相应的生命周期参数


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM