zoukankan      html  css  js  c++  java
  • Application Context和单例模式

    Google不推荐我们使用自定义的Application,基本上只有需要做一些全局初始化的时候才可能需要用到自定义Application。但多数项目只是把自定义Application当成了一个通用工具类,虽然没什么副作用但使用单例模式实现可能更加优雅。

    但是把自定义Application和单例模式混合到一起使用,那就大错特错了。一个非常典型的例子如下所示:

    public class MyApplication extends Application {  
        private static MyApplication app;  
        public static MyApplication getInstance() {  
            if (app == null) {  
                app = new MyApplication();  
            }  
            return app;  
        }   
    }  

    因为我们知道Application是属于系统组件,系统组件的实例是要由系统来去创建的,如果这里我们自己去new一个MyApplication的实例,它就只是一个普通的Java对象而已,而不具备任何Context的能力。我们只需谨记一点,Application全局只有一个,它本身就已经是单例了,无需再用单例模式去为它做多重实例保护了,正确代码如下所示:

    public class MyApplication extends Application {  
        private static MyApplication app;  
        // getInstance()方法里面不需要任何逻辑判断,直接返回app对象就可以了
        public static MyApplication getInstance() {  
            return app;  
        }  
        @Override  
        public void onCreate() {  
            super.onCreate();  
           //this就是当前Application的实例,那么app也就是当前Application的实例了
            app = this;  
        }  
    }  
  • 相关阅读:
    将jar打包成exe
    CXF + Spring 开发 Webservices
    关于highstock横坐标的一些的一些说明(1)使用UTC时间
    JAX-WS + Spring Integration Example
    EMA指标和MACD指标的JAVA语言实现
    MACD详细计算方法及例子
    notepad 不换行的问题
    eclipse 编码设置(转)
    如何理解作用域
    js中new一个对象的过程
  • 原文地址:https://www.cnblogs.com/yangjj08/p/11309252.html
Copyright © 2011-2022 走看看