虚拟与现实中 ,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——环境——联结、感知、影响——权力

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