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