使用LruCache的代码整理
来源:互联网 发布:excel数据标签 编辑:程序博客网 时间:2024/06/11 23:52
整理这篇博客的后面部分的代码,凑手重新梳理一下AsyncTask的流程
/** * 所有的图片处理 * * @author Administrator * */public class PicAllActivity extends Activity {private ImageView pic_image, pic_image2;private LruCache mMemoryCache = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.picall);init();// 获取到可用内存的最大值,使用内存超出这个值会引起OutOfMemory异常。// LruCache通过构造函数传入缓存值,以KB为单位。int maxMemory2 = (int) (Runtime.getRuntime().maxMemory() / 1024);// 使用最大可用内存值的1/8作为缓存的大小。int cacheSize = maxMemory2 / 8;mMemoryCache = new LruCache<String, Bitmap>(cacheSize) {@Overrideprotected int sizeOf(String key, Bitmap bitmap) {// 重写此方法来衡量每张图片的大小,默认返回图片数量。return bitmap.getRowBytes() * bitmap.getHeight() / 1024;}};loadBitmap(R.drawable.pic12, pic_image2);}private void init() {pic_image2 = (ImageView) findViewById(R.id.pic_image2);}public void addBitmapToMemoryCache(String key, Bitmap bitmap) {if (getBitmapFromMemCache(key) == null) {mMemoryCache.put(key, bitmap);}}public Bitmap getBitmapFromMemCache(String key) {return (Bitmap) mMemoryCache.get(key);}public void loadBitmap(int resId, ImageView imageView) {final String imageKey = String.valueOf(resId);final Bitmap bitmap = getBitmapFromMemCache(imageKey);if (bitmap != null) {imageView.setImageBitmap(bitmap);} else {imageView.setImageResource(R.drawable.left_touxiang);BitmapWorkerTask task = new BitmapWorkerTask(imageView);task.execute(resId);}}class BitmapWorkerTask extends AsyncTask<Integer, Void, Bitmap> {private ImageView mImageView;public BitmapWorkerTask(ImageView imageView) {mImageView = imageView;}/** * 第一 * * 这里是最终用户调用Excute时的接口,当任务执行之前开始调用此方法,可以在这里显示进度对话框。 */@Overrideprotected void onPreExecute() {// TODO Auto-generated method stubsuper.onPreExecute();}/** * 第二 * * 在后台加载图片。 */@Overrideprotected Bitmap doInBackground(Integer... params) {final Bitmap bitmap = ImageTools2.decodeSampledBitmapFromResource(getResources(), params[0], 100, 100);addBitmapToMemoryCache(String.valueOf(params[0]), bitmap);// publishProgress(values);//更新进度return bitmap;}/** * 第三 * * * 可以使用进度条增加用户体验度。 此方法在主线程执行,用于显示任务执行的进度。 */@Overrideprotected void onProgressUpdate(Void... values) {// TODO Auto-generated method stubsuper.onProgressUpdate(values);}/** * 第四 * * * 相当于Handler 处理UI的方式,在这里面可以使用在doInBackground 得到的结果处理操作UI。 * 此方法在主线程执行,任务执行的结果作为此方法的参数返回 */@Overrideprotected void onPostExecute(Bitmap result) {// TODO Auto-generated method stubmImageView.setImageBitmap(result);super.onPostExecute(result);}/** * * * 用户调用取消时,要做的操作 */@Overrideprotected void onCancelled() {// TODO Auto-generated method stubsuper.onCancelled();}}}
XML文件就是一个简单的ImageView控件。
0 0
- 使用LruCache的代码整理
- LruCache的使用
- LruCache的使用--pizifusheng
- 缓存LruCache的使用步骤
- Android中使用的LruCache
- LruCache原理分析整理
- LruCache类的使用(内存优化)
- android LruCache设置缓存的使用
- 一段使用VBScript整理文件的代码
- Android LruCache 代码走读
- Java-LinkedHashMap与LRUcache整理
- LruCache使用实例
- Android LruCache使用分析
- 缓存 LruCache 使用
- android lrucache使用
- android LruCache使用
- OkHttp配合LruCache使用
- android LruCache的使用 (本地缓存+内存缓存)
- 多线程(c++11)------创建线程
- CodeForces 404E Maze 1D
- RS232、RS422、RS485、TTL电平
- c++11学习笔记之智能指针
- 实参数组和形参数组在存储空间上完全重合
- 使用LruCache的代码整理
- MONGODB 数据的存储顺序发现不是按_ID 的顺序存储的原因
- perl的列表与数组(转)
- SQL2008 行锁使用RowLock
- 【jquery】jquery插件的开发
- 合并 CentOS 6.5 的两个 DVD 作为本地 YUM 源
- http权威指南读书笔记
- HDU 3033 I love sneakers! (变形分组背包)
- 武汉JAVA/android培训最优选择--传智播客武汉分校!