你好,游客 登录 注册 搜索
背景:
阅读新闻

Android 中加载网络资源时的优化 缓存和异步机制

[日期:2013-06-03] 来源:Linux社区  作者:dlutbrucezhang [字体: ]

也可以使用SoftReference,代码会简单很多,但是我推荐上面的方法。

public class MemoryCache {
 
 private Map<String, SoftReference<Bitmap>> cache = Collections
   .synchronizedMap(new HashMap<String, SoftReference<Bitmap>>());

 public Bitmap get(String id) {
  if (!cache.containsKey(id))
   return null;
  SoftReference<Bitmap> ref = cache.get(id);
  return ref.get();
 }

 public void put(String id, Bitmap bitmap) {
  cache.put(id, new SoftReference<Bitmap>(bitmap));
 }

 public void clear() {
  cache.clear();
 }

}

下面是文件缓存类的代码FileCache.java:

public class FileCache {

 private File cacheDir;

 public FileCache(Context context) {
  // 如果有SD卡则在SD卡中建一个LazyList的目录存放缓存的图片
  // 没有SD卡就放在系统的缓存目录中
  if (Android.os.Environment.getExternalStorageState().equals(
    android.os.Environment.MEDIA_MOUNTED))
   cacheDir = new File(
     android.os.Environment.getExternalStorageDirectory(),
     "LazyList");
  else
   cacheDir = context.getCacheDir();
  if (!cacheDir.exists())
   cacheDir.mkdirs();
 }

 public File getFile(String url) {
  // 将url的hashCode作为缓存的文件名
  String filename = String.valueOf(url.hashCode());
  // Another possible solution
  // String filename = URLEncoder.encode(url);
  File f = new File(cacheDir, filename);
  return f;

 }

 public void clear() {
  File[] files = cacheDir.listFiles();
  if (files == null)
   return;
  for (File f : files)
   f.delete();
 }

}

linux
相关资讯       Android异步  Android优化  Android缓存 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款