單例模式在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);
			}
		});

	}

}

好了,其實就這麼簡單。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章