美文网首页
Android Application是单例的么

Android Application是单例的么

作者: 赵勇Yaphet | 来源:发表于2017-08-29 16:26 被阅读35次

    答案是:否

    public class Application extends ContextWrapper implements ComponentCallbacks2 {
         public Application() {
             super(null);
         }
    

    在Application源码中,其构造方法是公有的,意味着可以生出多个Application实例,但为什么Application能实现一个app只存在一个实例呢?请看下面:

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

    ContextWrapper构造函数传入的base为null, 就算有多个Application实例,但是没有通过attach()绑定相关信息,没有上下文环境,所以Application能实现一个app只存在一个实例。

    相关文章

      网友评论

          本文标题:Android Application是单例的么

          本文链接:https://www.haomeiwen.com/subject/tombdxtx.html