【Android 应用】视频和图片缓存

最近弄一个广告的功能,需要用到视频和图片下载。每次都去下载就会导致流量耗费比较多,就增添了一个视频和图片缓存的功能。

一、涉及到的开源代码

1、SmartImageView

1.1、功能和优点

SmartImageView主要是为了加速从网上加载图片,支持根据URL地址加载图片,支持异步加载图片,支持图片缓存等。

1.2、开源代码

https://github.com/JackCho/SmartImageView

https://github.com/loopj/android-smart-image-view

有一点点不一样,但是整体框架是一样的。

1.3、推荐博客

https://blog.csdn.net/qq_36241003/article/details/72983929

2、AndroidVideoCache

1.1、功能和优缺点

功能:视频播放和缓存。

优点:

1、使用简单,支持设置缓存视频的大小或个数;

2、支持断点缓存(一段视频缓存一部分后,退出关闭视频后,下次再看时会从上次缓存到的部分开始继续缓存);

 缺点:

1、当快进视频时,如果视频没缓存到该位置,需要等视频缓存到这个点才会播放,不会直接跳到快进点开始缓存;

1.2、开源代码

https://github.com/danikula/AndroidVideoCache

1.3、推荐博客

https://www.jianshu.com/p/53c4a6c9bd07

二、通过okhttp下载保存文件

本来是想通过smartimagerview或者Androidvideocache一个开源库支持上缓存和显示的功能。

1、只使用smartimagerview,视频在线播放功能可能会打折扣

2、只使用Androidvideocache,Androidvideocache耦合很多,缓存功能开发难度大。

单独使用一个是不可能的,同时我所做的缓存并不需要打断功能,所以选择缓存文件直接使用简单下载保存就可以了。下面就是okhttp的文件下载保存代码。

import java.io.File;
import android.content.Context;
import com.seecool.apmservice.APMApplication;
import java.io.IOException;
import java.io.InputStream;
import java.io.FileOutputStream;

import com.android.okhttp.OkHttpClient;
import com.android.okhttp.Request;
import com.android.okhttp.Call;
import com.android.okhttp.Callback;
import com.android.okhttp.Response;
import com.seecool.apmservice.util.StringUtils;



public class xxx{
    private static final String DISK_CACHE_PATH = "/ad_cache/";

    public void cache(String url) {
        InputStream is = null;
        FileOutputStream fos = null;
        byte[] buf = new byte[2048];
        int len = 0;
        try {
            long sum = 0;
            
            File file = new File(getFilePath(), getCacheKey(url));
            fos = new FileOutputStream(file);
        
            OkHttpClient okHttpClient = new OkHttpClient();
            Request request = new Request.Builder().url(url).build();
            Response response = okHttpClient.newCall(request).execute();
            
            is = response.body().byteStream();
            while ((len = is.read(buf)) != -1) {
                fos.write(buf, 0, len);
                sum += len;
             }
            fos.flush();
            is.close();
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                if (is != null)
                    is.close();
            } catch (IOException e) {
            }
            try {
                if (fos != null)
                    fos.close();
            } catch (IOException e) {
            }
        }

    }
    
    private String getCacheKey(String url) {
        if(StringUtils.isEmptyOrNull(url)){
            throw new RuntimeException("Null url passed in");
        } else {
            int slashIndex = url.lastIndexOf('/');
            return url.substring(slashIndex+1,url.length());
            //return url.replaceAll("[.:/,%?&=]", "+").replaceAll("[+]+", "+");
        }
    }
    
    private String getFilePath() {
        String diskCachePath;
        
        Context appContext = APMApplication.getAppContext();
        diskCachePath = appContext.getCacheDir().getAbsolutePath() + DISK_CACHE_PATH;
        File file = new File(diskCachePath);
        if (!file.exists()) {
            file.mkdir();
        }
        return diskCachePath;
    }
}

结束语

好的,今天的分享和总结就到这里,下一篇让我们看看倒计时怎么做,如果很简单或者博客比较多的话,我就不写了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android设备上的应用程序会使用缓存来提高其性能。缓存是一种内存储存,用于暂时存储数据,以便下次更快地访问。但是,缓存的过度使用对设备性能和存储空间都会产生影响。因此,Android系统允许用户查看和管理每个应用程序的缓存使用情况。 要获取应用程序的缓存使用情况,可以按照以下步骤操作: 1. 打开设备的“设置”应用程序。 2. 在设置应用程序中选择“应用程序”或“应用管理器”选项,这取决于您的设备型号和Android版本。 3. 从列表中选择您想要检查的应用程序。 4. 在应用程序详细信息页面上,您可以看到应用程序占用的总存储空间、已安装空间和缓存空间的大小。 5. 点击“缓存”选项将显示这个应用程序的缓存大小。 6. 如果您想要清除缓存,可以点击“清除缓存”按钮。 以上就是如何在Android设备上获取应用程序缓存使用情况的简单步骤。通过查看和管理应用程序的缓存使用情况,可以释放存储空间,提高设备性能,并且确保您的应用程序在最佳的运行状态下工作。 ### 回答2: Android获取app占用缓存很简单。缓存是指临时存储的数据,例如图片、音频或视频等文件可以被缓存缓存数据可以提高应用程序的性能,因为它使应用程序可以更快地从手机中读取数据,并且可以减少数据的使用情况。 要获取Android应用程序占用缓存,可以在Android设备中执行以下步骤: 1. 打开设置应用程序。 2. 然后点击“应用程序”。 3. 在打开的列表中找到你要查看的应用程序。 4. 点击该应用程序以打开详情页面。 5. 在详情页面中,你可以看到应用程序的大小以及它占用了多少存储空间和多少缓存。 6.如果你希望清除缓存,请点击“清除缓存”按钮。 请注意,清除应用程序的缓存可能会导致无法加载某些数据,因为它们需要重新下载或重新缓存。所以请在仔细考虑清除缓存之前,确定这样做不会导致不必要的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值