免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

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

開通VIP
Android(12)

 

原文地址:絕對讓你理解Android中的Context .

 

整理這篇文章的目的是Context確實是一個很抽象的東西,我們在項目中隨手都會用到它,可是很多人根本不理解它到底是干什么的。

老規(guī)矩,作者提出的問題:
Android中,Context到底是個什么鬼東西,它到底是干嘛使得,我讀了很多篇文檔,然而并不能清除的理解它的含義。

答案:
簡單來說,就像它的名字(上下文)一樣,他是項目當前的狀態(tài)的一個標識,他可以讓新創(chuàng)建出來,新加入進來的對象或組件知道當前項目的進度,處于一個什么狀態(tài),這樣我們就可以容易理解上下文的意思了把,上文就是自己知道了之前項目已經處于一個什么樣的狀態(tài),下文就是告訴后來的對象或者組件當前項目處于一個什么狀態(tài)。
你可以通過getApplication()、getContext()、getBaseContext()或者this(在當前的Activity中時)來獲取context上下文。

 

通常使用Context的地方:
創(chuàng)建一個新的對象時:

1.創(chuàng)建新的View、adapter、listener

  1. TextView tv = new TextView(getContext());  
  2. ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...);  

2.獲取資源文件:例如 LAYOUT_INFLATER_SERVICE, SharedPreferences:

  1. context.getSystemService(LAYOUT_INFLATER_SERVICE)     
  2. getApplicationContext().getSharedPreferences(*name*, *mode*);  

3.隱式訪問組件

  1. getApplicationContext().getContentResolver().query(uri, ...);  

 

 

Context大概是android項目中最為常用的一個元素了
每個文檔中都會有如下一句話:

“An android context is an interface to global information about an application environment”
意思是Android的context是一個溝通全局信息和程序環(huán)境的一個接口

當我找一些介紹context的文章時,我發(fā)現(xiàn)少之又少,所以我將我看到的一些文章做一個整理。

這里的接口不是Java中接口interface的意思,這個接口就是連接的意思,連接兩個組件。

更準確說它是一個代表了各種環(huán)境數(shù)據的實體。

android.content.context使resources(資源文件)、數(shù)據庫、文件系統(tǒng)、activity、系統(tǒng)服務等組件之間有了可以訪問的入口。

或者可以這樣說:Context持有程序的狀態(tài)、入口、權限、文件系統(tǒng)、等信息,并且是Activity、Service、Application等組件的父類。

在現(xiàn)實世界中我們可以這樣描述Context:它就像一張門禁卡,通過這張門禁卡我們可以進入倉庫、可以進入客廳、可以進入廚房獲取我們想要的資源,這張門禁卡把幾個分離的房間連接到一起了。

一個擁有門禁卡(Context)的人(Activity)可以獲得各種系統(tǒng)的資源。

我們有3種方式可以獲得context:

  1. mContext = getApplicationContext();
    這種方式獲得的context是全局context,整個項目的生命中期中是唯一的且一直存在的,代表了所有activities的context

  2. mContext = getContext()
    這種方式獲得的context當activity銷毀時,context也會跟著銷毀了

  3. mContext = getBaseContext();
    說實話我也沒用過這種方式

何時使用getApplicationContext()或getContext()?

通過上面的分析我們知道了兩個context一個是跟隨activity的生命周期一個是跟隨application的生命周期的。

因此,當你想獲得一個長生命周期的context時,使用Application Context,例如當我們想要使用一個系統(tǒng)的服務時,這個系統(tǒng)服務的周期要比activity的生命周期長,如果我們使用getContext()的話,當activity銷毀時,系統(tǒng)服務也就不能正常進行了,這時候我們就得使用getApplicationContext()


 

 

 

 

 

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
android getContext()、getApplicationContext()和this有什么區(qū)別
Android Java Framework顯示Toast(無Activity和Servi...
Android Context 上下文 你必須知道的一切
Android Context完全解析,你所不知道的Context的各種細節(jié)
Android源碼分析
Android之Context 和 application context
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服