Android获取应用缓存、删除应用缓存

这篇具有很好参考价值的文章主要介绍了Android获取应用缓存、删除应用缓存。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

获取缓存

val cacheSize: String = DataCleanManager.getTotalCacheSize(CommonLib.mContext)

删除缓存

DataCleanManager.clearAllCache(CommonLib.mContext)

DataCleanManager

import android.content.Context;
import android.os.Environment;

import java.io.File;
import java.math.BigDecimal;

public class DataCleanManager {

    public static String getTotalCacheSize (Context context) throws Exception {
        return getFormatSize (getTotalCacheSizeInNum (context));
    }

    public static long getTotalCacheSizeInNum (Context context) throws Exception {
        long cacheSize = getFolderSize (context.getCacheDir ());
        if (Environment.getExternalStorageState ().equals (Environment.MEDIA_MOUNTED)) {
            cacheSize += getFolderSize (context.getExternalCacheDir ());
        }
        return cacheSize;
    }

    public static void clearAllCache (Context context) {
        try {
            deleteDir (context.getCacheDir ());
            if (Environment.getExternalStorageState ().equals (Environment.MEDIA_MOUNTED)) {
                deleteDir (context.getExternalCacheDir ());
                if (context.getExternalCacheDir () == null || !context.getExternalCacheDir().exists ()) {
                    context.getExternalCacheDir().mkdirs ();
                }
            }
            final File cacheDir = context.getApplicationContext ().getCacheDir ();
            deleteDir (cacheDir);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static boolean deleteDir (File dir) {
        if (!dir.isDirectory ()) {
            return dir.delete ();
        }
        if (dir != null && dir.isDirectory ()) {
            String[] children = dir.list ();
            for (int i = 0; i < children.length; i++) {
                boolean success = deleteDir (new File (dir, children[i]));
                if (!success) {
                    return false;
                }
            }
        }
        return dir.delete ();
    }

    // 获取文件
    //Context.getExternalFilesDir() --> SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据  
    //Context.getExternalCacheDir() --> SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据  
    public static long getFolderSize (File file) throws Exception {
        long size = 0;
        if (file == null || !file.exists () || !file.isDirectory ()) {
            return size;
        }
        try {
            File[] fileList = file.listFiles ();
            for (int i = 0; i < fileList.length; i++) {
                // 如果下面还有文件  
                if (fileList[i].isDirectory ()) {
                    size = size + getFolderSize (fileList[i]);
                } else {
                    size = size + fileList[i].length ();
                }
            }
        } catch (Exception e) {
            e.printStackTrace ();
        }
        return size;
    }

    /**
     * 格式化单位
     *
     * @param size
     * @return
     */
    public static String getFormatSize (double size) {
        double kiloByte = size / 1024;
        if (kiloByte < 1) {
//            return size + "Byte";  
            return "0K";
        }

        double megaByte = kiloByte / 1024;
        if (megaByte < 1) {
            BigDecimal result1 = new BigDecimal (Double.toString (kiloByte));
            return result1.setScale (2, BigDecimal.ROUND_HALF_UP)
                    .toPlainString () + "K";
        }

        double gigaByte = megaByte / 1024;
        if (gigaByte < 1) {
            BigDecimal result2 = new BigDecimal (Double.toString (megaByte));
            return result2.setScale (2, BigDecimal.ROUND_HALF_UP) .toPlainString () + "M";
        }

        double teraBytes = gigaByte / 1024;
        if (teraBytes < 1) {
            BigDecimal result3 = new BigDecimal (Double.toString (gigaByte));
            return result3.setScale (2, BigDecimal.ROUND_HALF_UP) .toPlainString () + "G";
        }
        BigDecimal result4 = new BigDecimal (teraBytes);
        return result4.setScale (2, BigDecimal.ROUND_HALF_UP).toPlainString () + "T";
    }


}

文章来源地址https://www.toymoban.com/news/detail-532099.html

到了这里,关于Android获取应用缓存、删除应用缓存的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android应用-Flutter实现Android拖动到垃圾桶删除效果-Draggable和DragTarget的详细讲解

    Draggable是Flutter框架中的一个小部件,用于支持用户通过手势拖动一个子部件。它是基于手势的一种方式,可以使用户可以在屏幕上拖动指定的部件。以下是关于Draggable的一些详细介绍: Draggable的构造函数 child (Widget): 被拖动的子部件。 feedback (Widget?): 拖动时显示的反馈部件。

    2024年02月04日
    浏览(40)
  • Android 应用获取签名MD5

     生成Android平台签名证书(.keystore)生成指南 根据uniapp官方的文档生成签名后,查看当前证书信息: 会输出以下格式信息: 会发现证书指纹下没有md5的信息 (可能是java的sdk版本原因导致的) 解决:输入以下命令可获取md5值 keytool -exportcert -keystore ync.keystore | openssl dgst -md5   温

    2024年02月12日
    浏览(34)
  • Android 获取手机已安装的应用列表(适配)

    加上权限才能获取到所有的应用 低版本的手机 可以用else里边的方法 也可以用 Intent的action 是:Intent.ACTION_MAIN 这个不要传错。 水平有限,如有问题欢迎评论区留言指正。 如果在高版本上有问题的话建议将 targetSdkVersion设置成26试试。 关注我获取更多知识或者投稿

    2024年02月13日
    浏览(44)
  • Android11 授权应用获取IMEI号和ICCID

    在Android11上获取IMEI号等设备信息需要 android.permission.READ_PRIVILEGED_PHONE_STATE 权限,而这个权限又只授予系统级应用。项目中如果 targetSdkVersion 值小于29获取到的是null,大于28报SecurityException错误。 1.获取ICCID 2.系统对应用的权限检查 源码路径:frameworks/base/telephony/java/android/tele

    2024年02月03日
    浏览(49)
  • Android应用开发(23)获取亮灭屏状态

    Android应用开发学习笔记——目录索引 在android 应用程序获取亮灭屏状态的常用方法有: 使用PowerManager提供的API函数 注册Broadcast监听 frameworks/base/core/java/android/os/PowerManager.java 使用PowerManager的API函数isInteractive()在应用程序中使用非常简单:在需要获取的地方调用一下即可。 百

    2024年02月15日
    浏览(44)
  • Android 获取手机应用数据 联系人,图片,拍照等

    1、获取手机联系人 获取手机信息前得获取权限 在得到权限后就能获取到手机联系人的信息 在manifest里面注册权限 判断是否有权限 获取联系人数据 附加一个请求权限的返回处理 2、获得手机相册的里的图片 处理返回的图片方式,根据业务需求可以进行自己设置,在此只是显

    2024年02月12日
    浏览(53)
  • Android 获取应用sha1和sha256

    在 Android 应用开发中,SHA-1(Secure Hash Algorithm 1)值是一种哈希算法,常用于生成应用的数字签名。这个数字签名用于验证应用的身份,并确保应用在发布到设备上时没有被篡改。 以下是生成 Android 应用的 SHA-1 值的步骤: 生成密钥库(KeyStore): 首先,你需要创建一个密钥库

    2024年02月07日
    浏览(59)
  • Android无法获取已安装应用包名的问题

    在某些情况下,我们需要获取android上已安装的第三方应用的一些信息 例如:使用如上代码检索,有些情况下也无法获取应用信息,而有些机型又可以获取到应用信息 从Android 11 开始 系统对app的可见性进行了保护,只有部分应用可见所有app 即使您的应用以 Android 11(API 级别

    2024年02月21日
    浏览(42)
  • Android应用-Flutter实现丝滑的滑动删除、移动排序等-Dismissible控件详解

    Dismissible 是 Flutter 中用于实现可滑动删除或拖拽操作的一个有用的小部件。主要用于在用户对列表项或任何其他可滑动的元素执行删除或拖动操作时,提供一种简便的实现方式。 列表项删除: 允许用户在列表中通过滑动手势删除某个项。 左右滑动: 提供可自定义的背景,当

    2024年02月04日
    浏览(50)
  • android实现无root获取其它应用data私有数据

    实现原理就是反编译app的AndroidManifest文件,注意是反编译应用的资源文件,而不是编译整个app,这个操作不需要动应用的dex,难度上要容易得多。解码资源文件要用到一些工具,android下推荐ARSCLib。接下来是对目标应用重新签名,而且必须用自己的keystore文件签名,这样才能保

    2024年02月11日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包