单例模式在android中的应用

项目演示及讲解

爱奇艺  http://www.iqiyi.com/w_19rtfb03pp.html

土豆 http://www.tudou.com/programs/view/M1R6cIW15DY/

项目下载

http://download.csdn.net/detail/u010134178/9052163

什么是单例模式

百度“java 单例”

以下是通过一个简单的列子来说明它的用户,别看这简单的例子,在公司项目里这可是最基本的呀

1、一个图片池类

public class ImagePool {

	private static Context mContext;

	private static Bitmap mBitmap;

	private static ImagePool mInstance;

	public ImagePool(Context context) {
		mContext = context;
		mBitmap = BitmapFactory.decodeStream(context.getResources()
				.openRawResource(R.drawable.zheng));
	}

	public static ImagePool getInstance(Context context) {
		if (null == mInstance) {
			mInstance = new ImagePool(context);
		}
		return mInstance;
	}

	public static ImagePool getInstance() {
		return mInstance;
	}

	/**
	 * 外部数据接口
	 * 
	 * @return
	 */
	public Bitmap getBitmap() {
		return mBitmap;
	}

	/**
	 * 设置
	 * 
	 * @return
	 */
	public void setBitmap(int id) {
		mBitmap = BitmapFactory.decodeStream(mContext.getResources()
				.openRawResource(id));
	}

}

一个Applaction层的全局变量

public class MyApplication extends Application{

	@Override
	public void onCreate() {
		super.onCreate();
		//init
		ImagePool.getInstance(getApplicationContext());
	}

}

在业务中的基本用法

public class MainActivity extends Activity {  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
  
        final ImageView image = (ImageView) findViewById(R.id.imageId);  
        Button change = (Button) findViewById(R.id.changeId);  
        Button start = (Button) findViewById(R.id.startId);  
  
        Drawable drawable = new BitmapDrawable(ImagePool.getInstance()  
                .getBitmap());  
        image.setBackgroundDrawable(drawable);  
  
        change.setOnClickListener(new OnClickListener() {  
            @Override  
            public void onClick(View v) {  
                ImagePool.getInstance().setBitmap(R.drawable.chuan);  
                Drawable drawable = new BitmapDrawable(ImagePool.getInstance()  
                        .getBitmap());  
                image.setBackgroundDrawable(drawable);  
            }  
        });  
  
        start.setOnClickListener(new OnClickListener() {  
            @Override  
            public void onClick(View v) {  
                Intent intent = new Intent(MainActivity.this,  
                        OtherActivity.class);  
                startActivity(intent);  
            }  
        });  
  
    }  
  
}

好了,其实就这么简单。

时间: 2024-10-19 02:20:36

单例模式在android中的应用的相关文章

设计模式实例学习-单例模式(Android中的使用场景)

1.设计模式实例-单例模式 单例模式,故名思议,是指在一个类中通过设置静态使得其仅创造一个唯一的实例.这样设置的目的是满足开发者的希望--这个类只需要被实例化创建一次,同时因为其为静态的缘故,加载的速度也应该快于正常实例化一个类的速度(理论上). 在Android开发中,当我们需要创建一个Fragment的时候常常会用到这样的模式,没有代码的学习是虚无的,接下来亮代码学习: public class SelectFrame extends Fragment { private final sta

单例模式在android中使用

单例模式(Singleton) 单例模式是对象的创建模式,单例模式能够确保某个类只有一个单一的实例对象存在,同时能够自行实例化并将单一的实例提供给外界调用的特点,其在实际项目开发中经常被用到. 单例模式的结构图说明如下: 结合上面的模式结构说明图,我们可以看到单例模式有几个显著的特点,具体如下所示: A.单例类(Singleton)只能有一个唯一的实例存在. B.单例类必须有能够自行创建自己的实例对象的能力. C.单例类必须能够给外界其他对象提供这个实例. 另外,对于单例模式从产生到现在,也已经

android开发学习 ------- 【转】 android中的单例模式 (详解)

https://blog.csdn.net/u011418943/article/details/60139644     这篇文章 前因后果 都说出来了 ,值得学习. https://blog.csdn.net/nuobabijie730/article/details/52191150   单例模式在android中的实际使用 https://blog.csdn.net/Card361401376/article/details/51347184 原文地址:https://www.cnblo

Android中的单例模式

定义: 单例模式:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 使用场景: 确保某一个类有且只有一个对象的场景,避免产生多个对象消耗过多的资源,或者某种类型的对象只应该有且只有一个. UML类图: 单例模式几个关键点: 1.构造函数不对外开放,一般为private. 2.通过一个静态方法或者枚举返回单例类对象. 3.确保单例类的对象有且只有一个,尤其在多线程环境下. 4.确保单例类对象在反序列化时不会重新构建对象. 单例模式简单代码: public class Single

Java设计模式之单例模式及在Android中的重要使用

之前在开发中老用到一些设计模式可是呢又不是很懂,于是狠下心来琢磨一番.下面是我琢磨后总结的,希望对您有用.如果发现了问题,请帮忙指正. 一.单例模式是什么? 单例模式最初的定义出现于<设计模式>:"保证一个类仅有一个实例,并提供一个访问它的全局访问点." Java中单例模式定义:"一个类有且仅有一个实例,并且自行实例化向整个系统提供该实例." 二.为什么用单例模式? 对于系统中的某些类来说,只有一个实例很重要.例如,一个系统中可以存在多个打印任务,但是只

Android中的设计模式-单例模式

Android中的设计模式-单例模式 单例模式算是比较常用的模式,在Java中如果想要一个JVM中只存在某个类的一个实例,就需要使用到单例模式,而只存在一个实例的需求一般是因为: 1,对象实例比较大和复杂,创建开销很大. 2,只需要一个实例来维护整个功能的流程与交互. 例如Android中的电话应用启动时,对于单卡单待的电话,只创建一个Phone对象,用来管理RIL,CallTracker,ServiceStateTracker等对象,手机中不存在第二个Phone对象去和RILC通信. 类图 单

android中如何实现UI的实时更新---需要考虑电量和流量

1.如果不考虑电量和流量的话,只需要在对应的activity里面继承Runnable,在run方法里面写一个while死循环,调用接口返回数据,如果数据发生了变化,就立即更新UI 2.需要考虑电量的话,就是 远程服务器端  把消息 发送给客户端,客户端收到信息,去发一个广播,对应的activity收到广播就去更新UI,这个广播发出者就是一个后台service组件 类似的问题: ----------------------网上有个帖子,说了一个handler同时更新多个activity的界面,做法

从源码角度分析Android中的Binder机制的前因后果

前面我也讲述过一篇文章<带你从零学习linux下的socket编程>,主要是从进程通信的角度开篇然后延伸到linux中的socket的开发.本篇文章依然是从进程通信的角度去分析下Android中的进程通信机制. 为什么在Android中使用binder通信机制? 众所周知linux中的进程通信有很多种方式,比如说管道.消息队列.socket机制等.socket我们再熟悉不过了,然而其作为一款通用的接口,通信开销大,数据传输效率低,主要用在跨网络间的进程间通信以及在本地的低速通信.消息队列和管道

【转载】如何在Android中避免创建不必要的对象

在编程开发中,内存的占用是我们经常要面对的现实,通常的内存调优的方向就是尽量减少内存的占用.这其中避免创建不必要的对象是一项重要的方面. Android设备不像PC那样有着足够大的内存,而且单个App占用的内存实际上是比较小的.所以避免创建不必要的对象对于Android开发尤为重要. 本文会介绍一些常见的避免创建对象的场景和方法,其中有些属于微优化,有的属于编码技巧,当然也有确实能够起到显著效果的方法. 使用单例 单例是我们常用的设计模式,使用这种模式,我们可以只提供一个对象供全局调用.因此单例