1. 程式人生 > >Android中Context引數解釋

Android中Context引數解釋

 context的作用,就是android應用連線service的橋樑。
比如Activity中有經常會有可能呼叫到系統的service,使用getSystemService()方法,這個方法調到最後,實際上是呼叫的ContextImpl的getSystemService()方法。 而ContextImpl是針對引數Context的實現形式,所以需要傳入引數context

在Android系統中,有很多的service,也就是服務。程式如果用到系統功能,一般都是呼叫服務間接完成的

Context字面意思指的是上下文,位於framework package的android.content.Context中,其實該類為LONG型,類似Win32中的Handle控制代碼,很多方法需要通過 Context才能識別呼叫者的例項,比如說Toast的第一個引數就是Context,一般在Activity中我們直接用this代替,所以當在Fragment中若要使用Context引數,首先要定義

[java] view plain copy print ?
  1. context=this.getActivity();  
context=this.getActivity();

[java] view plain copy print ?
  1. manager = (UsbManager) activity.getSystemService(Context.USB_SERVICE);  
manager = (UsbManager) activity.getSystemService(Context.USB_SERVICE);

但是如果這一段程式碼直接放在activity中的時候可以直接用this關鍵字代替。

[java] view plain copy print ?
  1. manager = (UsbManager) this.getSystemService(Context.USB_SERVICE);  
manager = (UsbManager) this.getSystemService(Context.USB_SERVICE);

代表呼叫者的例項為Activity,而到了一個button的onClick(View view)等方法時,我們用this時就會報錯,所以我們可能使用ActivityName.this來解決,主要原因是因為實現Context的類主要有Android特有的幾個模型,Activity、Service以及BroadcastReceiver。 

常規需要Context例項的方法主要有各種Service實現的類,比如說SensorManager在例項化時需要 getSystemService(String)方法就必須由Context的例項執行,還有一些私有的檔案系統I/O比如說 openFileInput以及常用的Toast的makeText方法。

轉自風輕雲喏的部落格:http://blog.csdn.net/a550508153/article/details/50237091