Android应用程序Context数目问题

我们知道Application和activity,Service都是直接间接继承Context,

(2)为什么他们还会有一个Context对象,如下面的mBase?

(3)那么一个应用程序的所有context之和还会只是Application和activity,Service数 目之和吗?不应该是2*activity数目+2*Service数目+Application数目

public class ContextWrapper extends Context {
    Context mBase;
    ......
    protected void attachBaseContext(Context base) {
        if (mBase != null) {
            throw new IllegalStateException("Base context already set");
        }
        mBase = base;
    }
    ......
}



繁星淼淼
浏览 523回答 2
2回答

撒科打诨

首先Context类是一个抽象类,无法直接实例化,其次关于你这个问题,源代码中的mBase只是一个引用,它的值(也就是base)是在attachBaseContext方法中传递进来的,换言之,这里的mBase的值是函数回调时传递进来的,并非由创建出来,所以并不冲突,一个应用程序中的context之和等于Activity的数量+Service数量+1,这里的1就是Applicant的Context,一个静态变量,用于保存和同步APP全局的环境配置信息。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java