图片缓存分为三种:
//参考网址
https://www.jianshu.com/p/2cd59a79ed4a
内存缓存:优先 速度快
实现方法:
- 通过 HashMap<String,Bitmap>键值对的方式保存图片,key为地址,value为图片对象,但因是强引用对象,很容易造成内存溢出,可以尝试SoftReference软引用对象
- 通过 HashMap<String, SoftReference<Bitmap>>SoftReference 为软引用对象(GC垃圾回收会自动回收软引用对象),但在Android2.3+后,系统会优先考虑回收弱引用对象,官方提出使用LruCache
- 通过 LruCache<String,Bitmap> least recentlly use 最少最近使用算法
会将内存控制在一定的大小内, 超出最大值时会自动回收, 这个最大值开发者自己定
本地缓存:次优先 速度快
- 初次通过网络获取图片后,我们可以在本地SD卡中将图片保存起来
- 可以使用MD5加密图片的网络地址,来作为图片的名称保存
//把图片的url当做文件名,并进行MD5加密
String fileName = null;
try {
fileName = MD5Encoder.encode(url);
File file=new File(CACHE_PATH,fileName);
Bitmap bitmap = BitmapFactory.decodeStream(new FileInputStream(file)); return bitmap;
} catch (Exception e) {
e.printStackTrace();
}
网络缓存:最后 速度慢,浪费流量
· 网络缓存中主要用到了AsyncTask来进行异步数据的加载
· 简单来说,AsyncTask可以看作是一个对handler和线程池的封装,通常,AsyncTask主要用于数据简单时,handler+thread主要用于数据量多且复杂时,当然这也不是必须的,仁者见仁智者见智
· 同时,为了避免内存溢出的问题,我们可以在获取网络图片后。对其进行图片压缩
//图片压缩
BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize=2;//宽高压缩为原来的1/2 options.inPreferredConfig=Bitmap.Config.ARGB_4444;
Bitmap bitmap =BitmapFactory.decodeStream(conn.getInputStream(),null,options);
图片缓存分为三种:
//参考网址
https://www.jianshu.com/p/2cd59a79ed4a
内存缓存:优先 速度快
实现方法:
- 通过 HashMap<String,Bitmap>键值对的方式保存图片,key为地址,value为图片对象,但因是强引用对象,很容易造成内存溢出,可以尝试SoftReference软引用对象
- 通过 HashMap<String, SoftReference<Bitmap>>SoftReference 为软引用对象(GC垃圾回收会自动回收软引用对象),但在Android2.3+后,系统会优先考虑回收弱引用对象,官方提出使用LruCache
- 通过 LruCache<String,Bitmap> least recentlly use 最少最近使用算法
会将内存控制在一定的大小内, 超出最大值时会自动回收, 这个最大值开发者自己定
本地缓存:次优先 速度快
- 初次通过网络获取图片后,我们可以在本地SD卡中将图片保存起来
- 可以使用MD5加密图片的网络地址,来作为图片的名称保存
//把图片的url当做文件名,并进行MD5加密
String fileName = null;
try {
fileName = MD5Encoder.encode(url);
File file=new File(CACHE_PATH,fileName);
Bitmap bitmap = BitmapFactory.decodeStream(new FileInputStream(file)); return bitmap;
} catch (Exception e) {
e.printStackTrace();
}
网络缓存:最后 速度慢,浪费流量
· 网络缓存中主要用到了AsyncTask来进行异步数据的加载
· 简单来说,AsyncTask可以看作是一个对handler和线程池的封装,通常,AsyncTask主要用于数据简单时,handler+thread主要用于数据量多且复杂时,当然这也不是必须的,仁者见仁智者见智
· 同时,为了避免内存溢出的问题,我们可以在获取网络图片后。对其进行图片压缩
//图片压缩
BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize=2;//宽高压缩为原来的1/2 options.inPreferredConfig=Bitmap.Config.ARGB_4444;
Bitmap bitmap =BitmapFactory.decodeStream(conn.getInputStream(),null,options);
图片缓存分为三种:
//参考网址
https://www.jianshu.com/p/2cd59a79ed4a
内存缓存:优先 速度快
实现方法:
- 通过 HashMap<String,Bitmap>键值对的方式保存图片,key为地址,value为图片对象,但因是强引用对象,很容易造成内存溢出,可以尝试SoftReference软引用对象
- 通过 HashMap<String, SoftReference<Bitmap>>SoftReference 为软引用对象(GC垃圾回收会自动回收软引用对象),但在Android2.3+后,系统会优先考虑回收弱引用对象,官方提出使用LruCache
- 通过 LruCache<String,Bitmap> least recentlly use 最少最近使用算法
会将内存控制在一定的大小内, 超出最大值时会自动回收, 这个最大值开发者自己定
本地缓存:次优先 速度快
- 初次通过网络获取图片后,我们可以在本地SD卡中将图片保存起来
- 可以使用MD5加密图片的网络地址,来作为图片的名称保存
//把图片的url当做文件名,并进行MD5加密
String fileName = null;
try {
fileName = MD5Encoder.encode(url);
File file=new File(CACHE_PATH,fileName);
Bitmap bitmap = BitmapFactory.decodeStream(new FileInputStream(file)); return bitmap;
} catch (Exception e) {
e.printStackTrace();
}
网络缓存:最后 速度慢,浪费流量
· 网络缓存中主要用到了AsyncTask来进行异步数据的加载
· 简单来说,AsyncTask可以看作是一个对handler和线程池的封装,通常,AsyncTask主要用于数据简单时,handler+thread主要用于数据量多且复杂时,当然这也不是必须的,仁者见仁智者见智
· 同时,为了避免内存溢出的问题,我们可以在获取网络图片后。对其进行图片压缩
//图片压缩
BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize=2;//宽高压缩为原来的1/2 options.inPreferredConfig=Bitmap.Config.ARGB_4444;
Bitmap bitmap =BitmapFactory.decodeStream(conn.getInputStream(),null,options);
图片缓存分为三种:
//参考网址
https://www.jianshu.com/p/2cd59a79ed4a
内存缓存:优先 速度快
实现方法:
- 通过 HashMap<String,Bitmap>键值对的方式保存图片,key为地址,value为图片对象,但因是强引用对象,很容易造成内存溢出,可以尝试SoftReference软引用对象
- 通过 HashMap<String, SoftReference<Bitmap>>SoftReference 为软引用对象(GC垃圾回收会自动回收软引用对象),但在Android2.3+后,系统会优先考虑回收弱引用对象,官方提出使用LruCache
- 通过 LruCache<String,Bitmap> least recentlly use 最少最近使用算法
会将内存控制在一定的大小内, 超出最大值时会自动回收, 这个最大值开发者自己定
本地缓存:次优先 速度快
- 初次通过网络获取图片后,我们可以在本地SD卡中将图片保存起来
- 可以使用MD5加密图片的网络地址,来作为图片的名称保存
//把图片的url当做文件名,并进行MD5加密
String fileName = null;
try {
fileName = MD5Encoder.encode(url);
File file=new File(CACHE_PATH,fileName);
Bitmap bitmap = BitmapFactory.decodeStream(new FileInputStream(file)); return bitmap;
} catch (Exception e) {
e.printStackTrace();
}
网络缓存:最后 速度慢,浪费流量
· 网络缓存中主要用到了AsyncTask来进行异步数据的加载
· 简单来说,AsyncTask可以看作是一个对handler和线程池的封装,通常,AsyncTask主要用于数据简单时,handler+thread主要用于数据量多且复杂时,当然这也不是必须的,仁者见仁智者见智
· 同时,为了避免内存溢出的问题,我们可以在获取网络图片后。对其进行图片压缩
//图片压缩
BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize=2;//宽高压缩为原来的1/2 options.inPreferredConfig=Bitmap.Config.ARGB_4444;
Bitmap bitmap =BitmapFactory.decodeStream(conn.getInputStream(),null,options);
图片缓存分为三种:
//参考网址
https://www.jianshu.com/p/2cd59a79ed4a
内存缓存:优先 速度快
实现方法:
- 通过 HashMap<String,Bitmap>键值对的方式保存图片,key为地址,value为图片对象,但因是强引用对象,很容易造成内存溢出,可以尝试SoftReference软引用对象
- 通过 HashMap<String, SoftReference<Bitmap>>SoftReference 为软引用对象(GC垃圾回收会自动回收软引用对象),但在Android2.3+后,系统会优先考虑回收弱引用对象,官方提出使用LruCache
- 通过 LruCache<String,Bitmap> least recentlly use 最少最近使用算法
会将内存控制在一定的大小内, 超出最大值时会自动回收, 这个最大值开发者自己定
本地缓存:次优先 速度快
- 初次通过网络获取图片后,我们可以在本地SD卡中将图片保存起来
- 可以使用MD5加密图片的网络地址,来作为图片的名称保存
//把图片的url当做文件名,并进行MD5加密
String fileName = null;
try {
fileName = MD5Encoder.encode(url);
File file=new File(CACHE_PATH,fileName);
Bitmap bitmap = BitmapFactory.decodeStream(new FileInputStream(file)); return bitmap;
} catch (Exception e) {
e.printStackTrace();
}
网络缓存:最后 速度慢,浪费流量
· 网络缓存中主要用到了AsyncTask来进行异步数据的加载
· 简单来说,AsyncTask可以看作是一个对handler和线程池的封装,通常,AsyncTask主要用于数据简单时,handler+thread主要用于数据量多且复杂时,当然这也不是必须的,仁者见仁智者见智
· 同时,为了避免内存溢出的问题,我们可以在获取网络图片后。对其进行图片压缩
//图片压缩
BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize=2;//宽高压缩为原来的1/2 options.inPreferredConfig=Bitmap.Config.ARGB_4444;
Bitmap bitmap =BitmapFactory.decodeStream(conn.getInputStream(),null,options);
图片缓存分为三种:
//参考网址
https://www.jianshu.com/p/2cd59a79ed4a
内存缓存:优先 速度快
实现方法:
- 通过 HashMap<String,Bitmap>键值对的方式保存图片,key为地址,value为图片对象,但因是强引用对象,很容易造成内存溢出,可以尝试SoftReference软引用对象
- 通过 HashMap<String, SoftReference<Bitmap>>SoftReference 为软引用对象(GC垃圾回收会自动回收软引用对象),但在Android2.3+后,系统会优先考虑回收弱引用对象,官方提出使用LruCache
- 通过 LruCache<String,Bitmap> least recentlly use 最少最近使用算法
会将内存控制在一定的大小内, 超出最大值时会自动回收, 这个最大值开发者自己定
本地缓存:次优先 速度快
- 初次通过网络获取图片后,我们可以在本地SD卡中将图片保存起来
- 可以使用MD5加密图片的网络地址,来作为图片的名称保存
//把图片的url当做文件名,并进行MD5加密
String fileName = null;
try {
fileName = MD5Encoder.encode(url);
File file=new File(CACHE_PATH,fileName);
Bitmap bitmap = BitmapFactory.decodeStream(new FileInputStream(file)); return bitmap;
} catch (Exception e) {
e.printStackTrace();
}
网络缓存:最后 速度慢,浪费流量
· 网络缓存中主要用到了AsyncTask来进行异步数据的加载
· 简单来说,AsyncTask可以看作是一个对handler和线程池的封装,通常,AsyncTask主要用于数据简单时,handler+thread主要用于数据量多且复杂时,当然这也不是必须的,仁者见仁智者见智
· 同时,为了避免内存溢出的问题,我们可以在获取网络图片后。对其进行图片压缩
//图片压缩
BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize=2;//宽高压缩为原来的1/2 options.inPreferredConfig=Bitmap.Config.ARGB_4444;
Bitmap bitmap =BitmapFactory.decodeStream(conn.getInputStream(),null,options);
图片缓存分为三种:
//参考网址
https://www.jianshu.com/p/2cd59a79ed4a
内存缓存:优先 速度快
实现方法:
- 通过 HashMap<String,Bitmap>键值对的方式保存图片,key为地址,value为图片对象,但因是强引用对象,很容易造成内存溢出,可以尝试SoftReference软引用对象
- 通过 HashMap<String, SoftReference<Bitmap>>SoftReference 为软引用对象(GC垃圾回收会自动回收软引用对象),但在Android2.3+后,系统会优先考虑回收弱引用对象,官方提出使用LruCache
- 通过 LruCache<String,Bitmap> least recentlly use 最少最近使用算法
会将内存控制在一定的大小内, 超出最大值时会自动回收, 这个最大值开发者自己定
本地缓存:次优先 速度快
- 初次通过网络获取图片后,我们可以在本地SD卡中将图片保存起来
- 可以使用MD5加密图片的网络地址,来作为图片的名称保存
//把图片的url当做文件名,并进行MD5加密
String fileName = null;
try {
fileName = MD5Encoder.encode(url);
File file=new File(CACHE_PATH,fileName);
Bitmap bitmap = BitmapFactory.decodeStream(new FileInputStream(file)); return bitmap;
} catch (Exception e) {
e.printStackTrace();
}
网络缓存:最后 速度慢,浪费流量
· 网络缓存中主要用到了AsyncTask来进行异步数据的加载
· 简单来说,AsyncTask可以看作是一个对handler和线程池的封装,通常,AsyncTask主要用于数据简单时,handler+thread主要用于数据量多且复杂时,当然这也不是必须的,仁者见仁智者见智
· 同时,为了避免内存溢出的问题,我们可以在获取网络图片后。对其进行图片压缩
//图片压缩
BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize=2;//宽高压缩为原来的1/2 options.inPreferredConfig=Bitmap.Config.ARGB_4444;
Bitmap bitmap =BitmapFactory.decodeStream(conn.getInputStream(),null,options);
图片缓存分为三种:
//参考网址
https://www.jianshu.com/p/2cd59a79ed4a
内存缓存:优先 速度快
实现方法:
- 通过 HashMap<String,Bitmap>键值对的方式保存图片,key为地址,value为图片对象,但因是强引用对象,很容易造成内存溢出,可以尝试SoftReference软引用对象
- 通过 HashMap<String, SoftReference<Bitmap>>SoftReference 为软引用对象(GC垃圾回收会自动回收软引用对象),但在Android2.3+后,系统会优先考虑回收弱引用对象,官方提出使用LruCache
- 通过 LruCache<String,Bitmap> least recentlly use 最少最近使用算法
会将内存控制在一定的大小内, 超出最大值时会自动回收, 这个最大值开发者自己定
本地缓存:次优先 速度快
- 初次通过网络获取图片后,我们可以在本地SD卡中将图片保存起来
- 可以使用MD5加密图片的网络地址,来作为图片的名称保存
//把图片的url当做文件名,并进行MD5加密
String fileName = null;
try {
fileName = MD5Encoder.encode(url);
File file=new File(CACHE_PATH,fileName);
Bitmap bitmap = BitmapFactory.decodeStream(new FileInputStream(file)); return bitmap;
} catch (Exception e) {
e.printStackTrace();
}
网络缓存:最后 速度慢,浪费流量
· 网络缓存中主要用到了AsyncTask来进行异步数据的加载
· 简单来说,AsyncTask可以看作是一个对handler和线程池的封装,通常,AsyncTask主要用于数据简单时,handler+thread主要用于数据量多且复杂时,当然这也不是必须的,仁者见仁智者见智
· 同时,为了避免内存溢出的问题,我们可以在获取网络图片后。对其进行图片压缩
//图片压缩
BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize=2;//宽高压缩为原来的1/2 options.inPreferredConfig=Bitmap.Config.ARGB_4444;
Bitmap bitmap =BitmapFactory.decodeStream(conn.getInputStream(),null,options);
图片缓存分为三种:
//参考网址
https://www.jianshu.com/p/2cd59a79ed4a
内存缓存:优先 速度快
实现方法:
- 通过 HashMap<String,Bitmap>键值对的方式保存图片,key为地址,value为图片对象,但因是强引用对象,很容易造成内存溢出,可以尝试SoftReference软引用对象
- 通过 HashMap<String, SoftReference<Bitmap>>SoftReference 为软引用对象(GC垃圾回收会自动回收软引用对象),但在Android2.3+后,系统会优先考虑回收弱引用对象,官方提出使用LruCache
- 通过 LruCache<String,Bitmap> least recentlly use 最少最近使用算法
会将内存控制在一定的大小内, 超出最大值时会自动回收, 这个最大值开发者自己定
本地缓存:次优先 速度快
- 初次通过网络获取图片后,我们可以在本地SD卡中将图片保存起来
- 可以使用MD5加密图片的网络地址,来作为图片的名称保存
//把图片的url当做文件名,并进行MD5加密
String fileName = null;
try {
fileName = MD5Encoder.encode(url);
File file=new File(CACHE_PATH,fileName);
Bitmap bitmap = BitmapFactory.decodeStream(new FileInputStream(file)); return bitmap;
} catch (Exception e) {
e.printStackTrace();
}
网络缓存:最后 速度慢,浪费流量
· 网络缓存中主要用到了AsyncTask来进行异步数据的加载
· 简单来说,AsyncTask可以看作是一个对handler和线程池的封装,通常,AsyncTask主要用于数据简单时,handler+thread主要用于数据量多且复杂时,当然这也不是必须的,仁者见仁智者见智
· 同时,为了避免内存溢出的问题,我们可以在获取网络图片后。对其进行图片压缩
//图片压缩
BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize=2;//宽高压缩为原来的1/2 options.inPreferredConfig=Bitmap.Config.ARGB_4444;
Bitmap bitmap =BitmapFactory.decodeStream(conn.getInputStream(),null,options);
图片缓存分为三种:
//参考网址
https://www.jianshu.com/p/2cd59a79ed4a
内存缓存:优先 速度快
实现方法:
- 通过 HashMap<String,Bitmap>键值对的方式保存图片,key为地址,value为图片对象,但因是强引用对象,很容易造成内存溢出,可以尝试SoftReference软引用对象
- 通过 HashMap<String, SoftReference<Bitmap>>SoftReference 为软引用对象(GC垃圾回收会自动回收软引用对象),但在Android2.3+后,系统会优先考虑回收弱引用对象,官方提出使用LruCache
- 通过 LruCache<String,Bitmap> least recentlly use 最少最近使用算法
会将内存控制在一定的大小内, 超出最大值时会自动回收, 这个最大值开发者自己定
本地缓存:次优先 速度快
- 初次通过网络获取图片后,我们可以在本地SD卡中将图片保存起来
- 可以使用MD5加密图片的网络地址,来作为图片的名称保存
//把图片的url当做文件名,并进行MD5加密
String fileName = null;
try {
fileName = MD5Encoder.encode(url);
File file=new File(CACHE_PATH,fileName);
Bitmap bitmap = BitmapFactory.decodeStream(new FileInputStream(file)); return bitmap;
} catch (Exception e) {
e.printStackTrace();
}
网络缓存:最后 速度慢,浪费流量
· 网络缓存中主要用到了AsyncTask来进行异步数据的加载
· 简单来说,AsyncTask可以看作是一个对handler和线程池的封装,通常,AsyncTask主要用于数据简单时,handler+thread主要用于数据量多且复杂时,当然这也不是
图片缓存分为三种:
//参考网址
https://www.jianshu.com/p/2cd59a79ed4a
内存缓存:优先 速度快
实现方法:
- 通过 HashMap<String,Bitmap>键值对的方式保存图片,key为地址,value为图片对象,但因是强引用对象,很容易造成内存溢出,可以尝试SoftReference软引用对象
- 通过 HashMap<String, SoftReference<Bitmap>>SoftReference 为软引用对象(GC垃圾回收会自动回收软引用对象),但在Android2.3+后,系统会优先考虑回收弱引用对象,官方提出使用LruCache
- 通过 LruCache<String,Bitmap> least recentlly use 最少最近使用算法
会将内存控制在一定的大小内, 超出最大值时会自动回收, 这个最大值开发者自己定
本地缓存:次优先 速度快
- 初次通过网络获取图片后,我们可以在本地SD卡中将图片保存起来
- 可以使用MD5加密图片的网络地址,来作为图片的名称保存
//把图片的url当做文件名,并进行MD5加密
String fileName = null;
try {
fileName = MD5Encoder.encode(url);
File file=new File(CACHE_PATH,fileName);
Bitmap bitmap = BitmapFactory.decodeStream(new FileInputStream(file)); return bitmap;
} catch (Exception e) {
e.printStackTrace();
}
网络缓存:最后 速度慢,浪费流量
· 网络缓存中主要用到了AsyncTask来进行异步数据的加载
· 简单来说,AsyncTask可以看作是一个对handler和线程池的封装,通常,AsyncTask主要用于数据简单时,handler+thread主要用于数据量多且复杂时,当然这也不是必须的,仁者见仁智者见智
· 同时,为了避免内存溢出的问题,我们可以在获取网络图片后。对其进行图片压缩
//图片压缩
BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize=2;//宽高压缩为原来的1/2 options.inPreferredConfig=Bitmap.Config.ARGB_4444;
Bitmap bitmap =BitmapFactory.decodeStream(conn.getInputStream(),null,options);
图片缓存分为三种:
//参考网址
https://www.jianshu.com/p/2cd59a79ed4a
内存缓存:优先 速度快
实现方法:
- 通过 HashMap<String,Bitmap>键值对的方式保存图片,key为地址,value为图片对象,但因是强引用对象,很容易造成内存溢出,可以尝试SoftReference软引用对象
- 通过 HashMap<String, SoftReference<Bitmap>>SoftReference 为软引用对象(GC垃圾回收会自动回收软引用对象),但在Android2.3+后,系统会优先考虑回收弱引用对象,官方提出使用LruCache
- 通过 LruCache<String,Bitmap> least recentlly use 最少最近使用算法
会将内存控制在一定的大小内, 超出最大值时会自动回收, 这个最大值开发者自己定
本地缓存:次优先 速度快
- 初次通过网络获取图片后,我们可以在本地SD卡中将图片保存起来
- 可以使用MD5加密图片的网络地址,来作为图片的名称保存
//把图片的url当做文件名,并进行MD5加密
String fileName = null;
try {
fileName = MD5Encoder.encode(url);
File file=new File(CACHE_PATH,fileName);
Bitmap bitmap = BitmapFactory.decodeStream(new FileInputStream(file)); return bitmap;
} catch (Exception e) {
e.printStackTrace();
}
网络缓存:最后 速度慢,浪费流量
· 网络缓存中主要用到了AsyncTask来进行异步数据的加载
· 简单来说,AsyncTask可以看作是一个对handler和线程池的封装,通常,AsyncTask主要用于数据简单时,handler+thread主要用于数据量多且复杂时,当然这也不是必须的,仁者见仁智者见智
· 同时,为了避免内存溢出的问题,我们可以在获取网络图片后。对其进行图片压缩
//图片压缩
BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize=2;//宽高压缩为原来的1/2 options.inPreferredConfig=Bitmap.Config.ARGB_4444;
Bitmap bitmap =BitmapFactory.decodeStream(conn.getInputStream(),null,options);
必须的,仁者见仁智者见智
· 同时,为了避免内存溢出的问题,我们可以在获取网络图片后。对其进行图片压缩
//图片压缩
BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize=2;//宽高压缩为原来的1/2 options.inPreferredConfig=Bitmap.Config.ARGB_4444;
Bitmap bitmap =BitmapFactory.decodeStream(conn.getInputStream(),null,options);