• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 单例模式——实战应用详解,单例实战详解

单例模式——实战应用详解,单例实战详解

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了java单例模式详解,单例模式详解,java中的单例模式,java单例模式,java单例模式例子等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

单例模式——实战应用详解,单例实战详解


单例模式的概念:  确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

这样做有以下几个优点:

    1.对于那些比较耗内存的类,只实例化一次可以大大提高性能,尤其是在移动开发中。
    2.保持程序运行的时候该中始终只有一个实例存在内存中

public class HFYManager
{
    //volatile:解决双重check null带来的问题:第一个check不为null,但其实并未初始化。volatile保证第一个check不为null时一定是初始化的。
    private static volatile HFYManager instance;
    
    //上面的static HFYManager,持有Context引用,若是activity,会引起内存泄漏(ApplicationContext不会泄漏)
    private Context mContext;
    
    //单例锁
    private static final byte[] SYNC_LOCK = new byte[0];
    
    private HFYManager(Context context)
    {
    //解决 可能内存泄漏的问题
        if (context instanceof Activity)  
        {
            this.mContext = context.getApplicationContext();
        }
        else
        {
            this.mContext = context;
        }
    }
    
    /**
     * 获取单例,懒加载
     * @param context 上下文
     * @return WalletTaManager
     *
     * 不在方法上加synchronized,双重check null,在初始化前加锁。(减少性能开销)
     */
    public static HFYManagergetInstance(Context context)
    {
        if (null == instance)
        {
            synchronized (SYNC_LOCK)
            {
                if (null == instance)
                {
                    instance = new HFYManager(context);
                }
            }
        }

        return instance;
    }
}

    注:context的使用,
    实际上,只要把握住一点,凡是跟UI相关的,都应该使用Activity做为Context来处理;其他的一些操作,Service,Activity,Application等实例都可以,当然了,注意Context引用的持有,防止内存泄漏。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 单例模式——实战应用详解,单例实战详解

相关文章

  • 2017-05-26Android环境搭建和编写helloworld,androidhelloworld
  • 2017-05-26Android开发之初识MVP模式
  • 2017-05-26不一样的Android选择器,简单方便,地址日期时间都好用!,android选择器
  • 2017-05-26android 公司app升级UI总结分析
  • 2017-05-26ListView和Adapter的配合使用以及Adapter的重写,listviewadapter
  • 2017-05-26硅谷社交8--联系人列表页面,硅谷社交8--联系人
  • 2017-05-26Android源码中内置包含so文件的APK文件,androidapk
  • 2017-05-26显示当前光照强度,当前光照强度
  • 2017-05-26用树莓派实现对话机器人
  • 2017-05-26Android新手入门2016(11)--非阻塞对话框AlertDialog

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • onTouch和onTouchEvent,ontouch
    • Android Native crash日志分析,androidcrash
    • 在Windows下快速搭建React Native Android开发环境
    • android实现文字渐变效果和歌词进度的效果
    • Android Studio下NDK的使用
    • 安卓GreenDao框架一些进阶用法整理,安卓greendao
    • android动画详解四 创建动画浅析
    • MAC下写入ntfs文件系统
    • 硅谷新闻2--禁止viewpager预加载,2--viewpager
    • 插入排序算法详解,排序算法详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有