读取大文件流的问题:缓存开多线程把图片从网络上荡下来以后,首先缓存至本地文件夹 //android.content.ContextWrapper.getCacheDir() android系统提供的一个存放和得到缓存文件夹的方法
然后对文件全路径截取后缀之前的内容进行MD5加密并与后缀拼成一个文件名,根据这个文件名和传入的路径构建一个文件 写一个缓存方法 判断是否存在缓存文件
如果是则返回加密后文件的Uri,如果不是则从网上下载文件并返回文件的Uri.做缓存的目的是用缓存的文件,而Uri就可以唯一标识一个文件。
public static Uri cacheFile(String path,File saveDir)throws Exception{ File file = new File(saveDir, MD5.getMD5(path)+ path.substring(path.lastIndexOf('.')));
if(file.exists()){
return Uri.fromFile(file);
}else{
FileOutputStream outStream = new FileOutputStream(file);
HttpURLConnection conn = (HttpURLConnection)new URL(path).openConnection();
conn.setConnectTimeout(5 * 1000);
conn.setRequestMethod("GET");
if(conn.getResponseCode()==200){
InputStream inStream = conn.getInputStream();
byte[] buffer = new byte[1024];
int len = 0;
while( (len = inStream.read(buffer)) !=-1 ){
outStream.write(buffer, 0, len);
}
outStream.close();
inStream.close();
return Uri.fromFile(file);
}else{
throw new Exception("文件下载失败!");
}
}
}
- 浏览: 973584 次
最新评论
-
JueLie:
规划规划
【Java线程】锁机制:synchronized、Lock、Condition -
yuejingjiahong:
android自带Json API -
ti_an_1989:
所以这种情况是不使用launchMode为singleTask ...
android Task,launcherMode对返回键与laucher的影响 -
IXHONG:
http://itlong.com
依赖注入和控制反转 -
lookstorm:
好文
java内存模型
相关推荐
在这个"Android异步加载图片例子"中,我们将探讨如何在Android应用中实现这一功能。 首先,我们需要理解Android的主线程(UI线程)与工作线程的区别。主线程负责处理用户界面交互,而工作线程则用于执行耗时操作,...
综上所述,Android异步加载图片和缓存策略是提升应用性能的关键技术。通过合理使用工作线程和缓存机制,可以显著改善用户体验,降低系统负载。在实际开发中,选择合适的图片加载库,并结合最佳实践,能够帮助我们...
本话题主要围绕"android异步加载图片缓存释放"展开,我们将深入探讨如何实现这个功能以及相关的知识点。 首先,异步加载图片的目的是为了让用户在浏览应用时不会因为网络请求而等待,提高应用的响应速度。通常,...
总的来说,Android异步加载图片缓存优化是通过合理利用内存和磁盘资源,配合高效的异步处理,为用户提供流畅的图片浏览体验,同时避免了由于大图加载引发的内存问题。开发者可以通过学习这个压缩包中的源码和文档,...
在Android应用开发中,图片加载是一项常见的任务,尤其是在处理大量图片或者网络图片时,为了提供良好的用户体验,我们通常会采用异步加载的方式。本篇将深入探讨Android平台上的图片异步加载策略,以及如何加载网络...
安卓源码包android图片缓存&展示Android 异步加载图片等24个合集: ‘360全景查看demo.rar afinal框架实现图片的简单异步缓存加载.rar andengine中直接加载多张小图片合成一张大图片生成动画精灵.rar android gif...
本资料包主要讲解了如何使用`AsyncTask`进行异步加载图片,这对于在UI线程中保持流畅用户体验至关重要。 `AsyncTask`是Android SDK中的一个类,它为开发者提供了简单的多线程和回调功能。它的核心思想是将长时间...
"Android异步加载图片"是一个常见的需求,它涉及到用户体验优化、内存管理以及线程安全等多个方面。这里我们将深入探讨这个主题,并结合提供的"ImageLoader-develop"可能是一个图片加载库的源码,来讲解相关的知识点...
因此,开发者通常采用异步加载图片,将图片的下载、解码和显示过程放在后台线程,保证主线程的流畅性。 在Android中实现异步图片加载的方法有很多种,常见的有以下几种: 1. **AsyncTask**:Android自带的异步任务...
因此,我们需要采用异步加载图片的方式,同时为了优化性能,通常会采用双缓存策略。本文将详细介绍如何在ListView中实现图片的异步加载,并且在用户拖动时不加载,以提高滚动流畅性。 一、异步加载原理 异步加载是...
然而,在实际开发中,当我们需要在RecyclerView中异步加载图片时,可能会遇到图片显示乱序的问题。本文将深入探讨这个问题及其解决方案。 首先,我们来理解为什么会出现图片乱序的现象。这是因为RecyclerView在滚动...
当图片需要加载时,先查找内存缓存,如果没有找到再查找磁盘缓存,如果磁盘缓存也没有,则从网络加载,并将图片存入两层缓存中,以便后续使用。 "imageloader"这个名字很可能是一个图片加载库的实现,常见的Android...
这两个文件可能是演示如何在ListView或RecyclerView中使用异步加载图片的示例项目。`TestSyncListView`可能是一个使用了传统同步加载方式的ListView,导致滚动时卡顿;而`AsyncListImage`则可能展示了使用异步加载库...
因此,异步加载图片是必要的,它将图片加载过程放在后台线程,不影响主线程的正常运行,保证了界面的流畅性。 其次,缓存机制是提高应用性能的关键。UIL支持内存缓存和本地磁盘缓存。当图片首次加载时,会被保存到...
当图片请求时,Afinal会先检查内存缓存,如果存在则直接返回,不存在则查找磁盘缓存,若磁盘缓存也不存在,才会发起网络请求并同时保存到缓存中。 在具体实现上,Afinal提供了一些关键类和方法,例如`ImageLoader`...
2. ** 异步加载图片的重要性** - 直接在主线程加载网络图片会导致应用卡顿,用户体验下降,因为主线程负责处理用户交互和UI更新。 - 异步加载是在后台线程执行耗时操作,如下载和解码图片,然后在主线程更新UI,...
本文将深入探讨Android ListView中异步加载图片的策略、常见问题以及解决方案。 首先,我们要理解异步加载的基本原理。异步加载是指在后台线程中执行耗时操作,如加载图片,而主线程则继续处理用户交互,保证界面...
3. **图片缓存机制**: - 异步图片加载框架通常包含内存缓存和磁盘缓存两部分。内存缓存用于快速响应,当图片数据在内存中存在时,直接从内存读取;磁盘缓存则用于长期存储,即使应用关闭,下次打开时仍能快速加载...