虛擬與現實中 ,Context該如何理解?

    當你接觸java 或者Android的時候,一定會遇到一個名詞——Context。

    它是什麼意思呢?

    上下文,嗯?

    什麼是上下文呢?

    嗯——嗯——嗯————

    很難說, 腦子好像出現了一片空白。

    這說明了 “上下文”給不了你直接的想像空間,它在你心中很孤獨。

    金剛說:“如果知識是孤立的,它將毫無魅力可言!”

    馬克思也曾說:“世間萬物是普遍聯繫的”。

    知識作爲人類對世間萬物認知的概括,它們之間的聯繫遠遠超過你的想像。

    現在我們就一起去看一看 Context 在人類知識體系中的關係網,從而感受下Context 到底是個什麼玩意兒。

    首先還是回到 Android中的Context,去看一看:它是誰?它可以做什麼?它是怎麼做到的?

    在此過程中 我們亦要不斷思考 :現實中有沒有跟Context類似的概念。

     now~ let’s do it,go !go! go!

    Context是何物?看定義

public abstract class Context {
 ----靜態常量-----
 ----抽象方法-----
}

    這段代碼是說 Context是一個抽象類。什麼叫抽象類呢?這裏暫不深入討論,只打個比方,動物就是一個抽象類, 它不像貓、狗、人···有具體的形象,“動物” 只是定義了它們的一些共同特徵,比如細胞形態等。

    Context亦是如此,它定義了所有Context們所擁有的共同特徵。

    接着我們一起看下這些共同特徵是什麼。

    啊- 啊-一起觀看太麻煩了,這裏我直接總結下吧:
    1) 具備共同的一些靜態常量,比如標誌文件可讀範圍的值、標記服務啓動模式的值等;
    2 )調用系統資源 ,獲取res目錄下的圖片 、文字、 顏色 、style 獲取sp等等資源等;
    3) 跨進程通信。
    其中1) 、2) 都是直接調用資源;3) (跨進程通信)也可以認爲是對系統入口和出口資源的一種調用。

    So~ Context的定義的共同特徵就是 —— 能夠調用資源。

    想一下,再想一下, 生活中哪個概念表明你擁有調用資源的資格 ....

    嗯—— 嗯—— 嗯~嗯.

     -----------權力---------

     對 , yes,就是權力!
     擁有權力的可能是一個機構 、一個人 、一個職位等,但它們有一個共同特徵 ——可調用資源。
     你是村長,你就隨便使用村裏的大喇叭;
     你是老闆,就盡情佔用着公司的會議室。

     冷靜下~

     前面我們基本上搞清楚了Context相當於權力,作用是調用資源。在開始瞭解權力是怎麼發揮作用之前,我們先來看一看到底誰是具有權力的,怎麼辨別誰是王,誰是狐狸。

     還是回到Android世界中,在這裏我們是神、我們是創造者,我們可以輕而易舉的看到有三類公開的對象繼承自Context,Activity、 Service 、Application,它們是這個虛擬世界中(進程中)的三種權力機構,他們既有類似的權力(由Context定義),也有自己的專屬能力。

     一個個來,Activity定義:

public class Activity extends ContextThemeWrapper
public class ContextThemeWrapper extends ContextWrapper
public class ContextWrapper extends Context {

     這段代碼意思是 Activity雖然經過多層包裝,但它本質是一個Context。這就好比帝王雖處於巨大的權力光環包裹之中,但他本質依舊是一個人,依然具備人的基本權力。

     Application、Service的定義與Activity類似,也是最終繼承一個Context,他們都是特殊的權力機構,咱就略過。

     回想下,在Android中,如果其他對象想使用系統資源,比如資源文件夾下下的圖片,一般是怎麼做的呢?
     一般是先拿到Activity 、 Application的實例,然後使用這個實例或者他們的Context去調用資源。

     你又想到了什麼?借權 ,狐假虎威,這跟現實世界中一樣, 我們如果沒有權力去調動資源,那麼一般做法就是去權力擁有者那裏索要他們的證書、簽名、令牌 ,或者帶上權力擁有者去調動資源。

     現實世界中我們並沒有上帝視角,不能看透每個事物的本質,那我們怎麼確定一個人、一個機構到底有沒有我們需要的權力呢?

     回到Android世界中,在這裏,一個對象是否有權調動資源 ,看的是它是否能夠用“自己名義" -this去 發起調用。

     現實中亦是如此,判斷一個人是不是有權,我們就看他的話好不好使,他的簽名好不好用,他頒發的令牌可不可以調動資源,也可以說是面子夠不夠大。
     在社交活動中, 總會聽到類似這樣的話:“看在我面子上,給他批了這塊地”。 其實這是潛意識中去聲明並使用自己的權力,當不給你面子,本質上是權力不被認可或者被冒犯,那就很容易出現爭端、暴力事件。

     知道了誰是王,誰是狐狸,繼續我們的話題:
     ————權力是怎麼發揮作用的————

     還是先回到Android世界中,Context是一個抽象類,我們需要到去看看Context具體實現類是怎樣調動資源的。

     不管是你去看Activity 、Application 、還是Service都可以就發現他們獲取資源共同調用了

 @Override
    public Resources getResources() {
        return mBase.getResources();
    }

這個mBase是一個ContextImpl對象,ContextImpl真正實現了Context的功能,也是就是說要了解Context們的共同權力是如何生效的,我們需要去ContextImpl中探尋。

來看一看ContextImpl

class ContextImpl extends Context {
  final @NonNull ActivityThread mMainThread;
  private final ApplicationContentResolver mContentResolver;
  private final @NonNull ResourcesManager mResourcesManager;
  private @NonNull Resources mResources;
  private @Nullable Display mDisplay; 
 @Override
    public AssetManager getAssets() {
       return getResources().getAssets();
   }

   @Override
   public Resources getResources() {
        return mResources;
   }
@Override
    public Display getDisplay() {
        if (mDisplay == null) {
            return mResourcesManager.getAdjustedDisplay(Display.DEFAULT_DISPLAY,
                    mResources);
        }
        return mDisplay;
    }

   @Override
  public void updateDisplay(int displayId) {
        mDisplay = mResourcesManager.getAdjustedDisplay(displayId, mResources);
   }

 ......

     由上可以看出ContextImpl是通過引用一個個資源管理對象來完成具體資源的調用,“引用的意思”有兩重 :
     1) 你跟這個對象有聯結;
     2) 你對這個對象有影響。
     所以Context就是通過在一條條與其他對象聯結上施加影響來實現自己的權力, 這其實也是權力的本質

     回到現實中,從權力如何發揮作用出發,就不難理解很多看似不合理的社會現象。

     當前社會,爲什麼明星、流量主播可以輕而易舉獲取巨大的利益,而大多數勤勤懇懇的科學家、研究員等卻可能在忍受着不公平和窮困?

     因爲明星和流量主播具備了權力發生的兩個重要要素——跟大衆的聯結和對大衆的影響,只要加以利用那就可獲取大量的資源。

     而大多數的科學家、研究員等人卻沉浸在自己研究中,沒有和廣大民衆建立聯結並提供自己的影響力,自然而然他們不具備大規模調動資源的權力,儘管他們在社會中貢獻很大,但沒有權力就很難直接獲得所需的資源,這時就需要社會和政府進行資源的調配。

     分析權力如何發生,也給我們提供了獲取權力的途徑:
     一 、構建聯結
     二 、提升影響力

     我們皆可以通過這種方法不斷提升自己的權力,從而可以調動更多的資源去實現自己的夢想。

     現在社會微信 、支付寶、 抖音 等構建了幾乎與每一個人的緊密聯結,一念而發、萬衆所知。這些平臺不僅僅是信息傳播獲取平臺,更是權力運作中心、權力行使平臺,權力可行善,可作惡,藉助於平臺更是可以放大千倍、萬倍、億萬倍,所以國家和人民對他們的監管應該是防微杜漸的、謹小慎微的。

     Context——權力——聯結、影響

     Context——權力——聯結、影響

     回到最初的最初,Context是環境的意思,從前面分析 ,我們知道虛擬世界中的環境不過由一個個聯結實現,我們能從聯結中獲取信息、資源,也可以通過聯結對其他對象施加影響,這一個個聯結是具體的,可感知的。

     同樣在現實世界亦是如此,我們所說的自然環境、社會環境不過是由一條條具體的與人、與物的聯結構成,而你能感知到的、能夠影響到的就是你的權力。探測技術的發展、先進工具的使用都是人類嚮往神的力量,在追求更大的權力的征途中不斷前進。

     最後的最後我們再一起回顧下:

     Context——環境——聯結、感知、影響——權力

     Context——環境——聯結、感知、影響——權力

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章