精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Android上下文

大家對上下文(Context)的概念并不陌生,在軟件開發領域,它主要用于存儲進程或應用運行時的資源和對象的引用,此外,我們在接觸其他系統和框架的時候也經常會碰到上下文的概念。當然,對于Android應用來說,上下文是非常重要的,這部分的內容在Android應用的實際開發中也會經常使用到,因此本節將會重點介紹Android上下文的相關知識,為后面實戰編程打下一定的基礎。

在Android應用框架中,根據作用域的不同,可以把上下文分為兩種,一種是Activity界面的上下文,即Activity Context;另一種是Android應用的上下文,即Application Context。下面我們分別介紹這兩種上下文的概念和使用。

2.5.1 界面上下文(Activity Context)

界面上下文(Activity Context)在應用界面(Activity)啟動的時候被創建,主要用于保存對當前界面資源的引用。界面上下文在Activity界面控制器類中被使用,當我們需要加載或者訪問Activity相關的資源時,會需要用到該Activity的上下文對象。比如,我們需要在界面中創建一個控件,示例代碼如清單2-10所示。

代碼清單 2-10

  1. public class TestActivity extends Activity {  
  2. ...  
  3. public void onCreate(Bundle savedInstanceState) {  
  4.     super.onCreate(savedInstanceState);  
  5.     TextView mTextView = new TextView(this);  
  6.     label.setText("Test Text View");  
  7.     setContentView(mTextView);  
  8. }  
  9. ...  

通過上面的代碼片斷,我們創建了一個文本框控件(TextView),并賦予該控件對應界面控制器(TestActivity)的上下文對象(this)。實際上,把界面控制器的上下文對象傳遞給控件,就意味著該控件擁有一個指向該界面對象的引用,可以引用界面對象占有的資源;同時,Android界面系統也將該控件綁定到該上下文指向的界面對象,最終組合并展示出來。

界面上下文(Activity Context)的生命周期跟Activity界面的是同步的,即當Activity被銷毀的時候,其對應的上下文也被銷毀了,同時,和該上下文有關的控件對象也將被銷毀并回收。因此,我們也可以認為上下文可以用于串聯Android應用之中的對象和組件,在理解了這點之后,在使用上下文的時候就不會迷惑了。此外,Context類中比較常用的方法如下。

getApplicationContext:獲取當前應用的上下文對象,相關內容請參考2.5.2節。

getApplicationInfo:獲取當前應用的完整信息并存于ApplicationInfo對象中,其中常用的信息包括包名packageName、圖標icon以及權限permission等屬性,更多屬性可參考SDK中android.content.pm.ApplicationInfo類的說明。

getContentResolver:獲取ContentResolver對象,用于查詢所需的Content Provider提供的信息,更多知識請參考2.4.4節內容。

getPackageManager:獲取PackageManager對象,PackageManager的用途比ApplicationInfo更加廣泛,該類可以從系統的PackageManagerService中獲取安裝包和運行進程的信息,作用于系統范圍。

getPackageName:獲取包名,包名(packageName)可作為Android應用的唯一標識。

getResources:獲取應用的資源對象Resources,該對象提供一系列的get方法來獲取圖形Drawable、字符串String以及視頻Movie等資源。

getSharedPreferences:獲取用于持久化存儲的SharedPreferences對象,相關內容請參考2.6.1節。

getSystemService:獲取系統級別服務的對象,Android應用框架為我們提供了豐富的系統服務,getSystemService方法就是用于獲取這些系統服務對象并運用到應用開發中去。表2-4中列出了常用系統服務及其簡單介紹,大家可以先了解一下。

表2-4   Android常用系統服務

 

界面上下文是Android應用開發中最經常被使用的上下文對象,應用界面中幾乎所有的UI控件都需要用到,這一點在實際運用的過程中大家會體會得更深刻。2.5.2 應用上下文(Application Context)

應用上下文(Application Context)在整個應用(Application)開始的時候被創建,用于保存對整個應用資源的引用,在程序中可以通過界面上下文的getApplicationContext方法或者getApplication方法來獲取。在實際應用的時候,我們通常會把應用上下文當做全局對象的引用來使用。當然,對于不同的應用我們會定義應用對象來使用,如代碼清單2-11所示。

代碼清單 2-11

  1. class TestApp extends Application {  
  2. ...  
  3.     private String status;  
  4.       
  5.     public String getStatus(){  
  6.         return status;  
  7.     }  
  8.       
  9.     public void setStatus(String s){  
  10.         sstatus = s;  
  11.     }  
  12. ...  

TestApp應用類繼承自Application基類,定義了自己的狀態變量和get/set方法,可在整個應用程序中進行設置和獲取。當然,我們還需要在應用程序的配置文件AndroidManifest.xml中進行配置,如代碼清單2-12所示。

代碼清單 2-12

  1. <application android:name=".TestApp"   
  2.      android:icon="@drawable/icon"   
  3.      android:label="@string/app_name"> 
  4. …  
  5. </application> 

配置完畢之后,在應用程序的Activity界面中就可以使用getApplicationContext來獲取該應用的上下文對象來完成所需功能了,使用范例請參考代碼清單2-13。

代碼清單 2-13

  1. class TestActivity extends Activity {  
  2. ...  
  3.     @Override  
  4.     public void onCreate(Bundle b){  
  5.         ...  
  6.         TestApp app = (TestApp) this.getApplicationContext();  
  7.         String status = app.getStatus();  
  8.         ...  
  9.     }  
  10. ...   

實際上,在Android應用框架中,android.app.Activity類和android.app.Application類都是從android.content.Context類繼承而來的,這也是為什么可以在Activity和Application中方便地使用this來代替對應上下文的原因。當然,理解兩種Android上下文的用法在Android應用編程中是非常重要的,因為只有理解了Android上下文才能比較完整地理解Android應用的運行環境,進而更好地控制應用的運行狀態。另外,我們也會在第7章中通過實例來加深大家對Android上下文用法的理解。


本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Android核心分析(21)----Android應用框架之AndroidApplication
談談Android里的Context的使用!!!
Android(12)
Android應用程序窗口(Activity)的運行上下文環境(Context)的創建過程分析
Android application context/activity context與內存泄露
Android中context及全局變量小析
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服

主站蜘蛛池模板: 临邑县| 汝阳县| 柘城县| 泾阳县| 南汇区| 吕梁市| 山阴县| 闵行区| 多伦县| 长阳| 清河县| 宕昌县| 辰溪县| 静海县| 广元市| 宜良县| 浪卡子县| 中西区| 峨边| 汝阳县| 鹤壁市| 阜新市| 灵石县| 沈丘县| 迁西县| 唐河县| 许昌市| 卓资县| 韩城市| 乌兰察布市| 团风县| 蒙自县| 孟津县| 牟定县| 日照市| 赤壁市| 昌都县| 石台县| 图木舒克市| 北京市| 桂东县|