Android 程序常用功能《清除缓存》

34 篇文章 0 订阅
2 篇文章 0 订阅
用户在使用我们所研发的App的时候,通常都会遇到如下的问题:

使用过程中可能会遇到应用程序或软件更新失败,因为用户的智能手机存储空间不足。 由于应用程序崩溃和其他问题,用户的数字设备运行速度比以前慢。 所有这些问题都是由于用户的存储空间不足造成的。 实际上,即使用户购买了128 GB或256 GB的手机,删除垃圾文件仍然很重要 在Android手机上清除缓存 定期。

因此,本文给大家分享一下,在研发app中常用的清除缓存数据和应用数据的功能如何实现?

缓存数据的含义是什么?

缓存数据表示应用或网站存储在Android手机或平板电脑中的所有媒体文件。 因此,每次使用应用程序时,它都会自动保存包括文件,图像等在内的缓存数据。 因此,下次加载此应用程序时,用户可以快速,顺利地获取目标信息。 如果仍然不知道缓存数据是什么,可以参考这些常见问题。

  1. Android上的“清除应用程序数据”和“清除应用程序缓存”有什么区别?
    缓存数据是Android设备的临时存储区域。 它可以加快用户的操作系统运行速度。 因此,当用户清除缓存Android时,用户几乎没有风险,而应用数据则扮演更重要的角色。 清除Android手机上的应用数据后,用户之前的所有数据和内容都将被删除。 因此,用户的应用将重置为其默认状态。

  2. 可以清除Android上的所有缓存应用数据吗?
    是。 清除Android上的缓存数据并不重要。 用户只需删除存储在内部存储空间中的临时文件即可。 可以在需要时自动从Internet加载缓存数据。 清除Android手机上的缓存后,用户不会丢失任何重要或敏感数据。

  3. 清除手机缓存后会发生什么?
    用户可以有效地释放Android手机或平板电脑上的更多内存空间。 此外,它可以改善电池寿命,加快数字设备的速度并解决一些Android系统问题,例如 Android被困在Odin模式中,下载模式,软砖等

如何在Android中清除缓存?

这里直接给大家展示一下,应用程序中的清除缓存功能,如下图:

在这里插入图片描述

如何通过程序的方式实现如上图的功能?
/**
 * @author 拉莫帅
 * @date 2022/3/18
 * @address
 * @Desc 本地存储工具类
 */
public class CacheDataManager {
    /**
     * 获取缓存大小
     *
     * @param context
     * @return
     * @throws Exception
     */
    public static String getTotalCacheSize(Context context) throws Exception {

        long cacheSize = getFolderSize(context.getCacheDir());

        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {

            cacheSize += getFolderSize(context.getExternalCacheDir());
        }
        return getFormatSize(cacheSize);
    }

    /**
     * 清除缓存
     *
     * @param context
     */
    public static void clearAllCache(Context context) {

        deleteDir(context.getCacheDir());
        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {

            deleteDir(context.getExternalCacheDir());
        }
    }

    private static boolean deleteDir(File dir) {
        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();
    }

    public static long getFolderSize(File file) throws Exception {
        long size = 0;
        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
     */
    public static String getFormatSize(double size) {

        double kiloByte = size / 1024;
        if (kiloByte < 1) {

            return size + "Byte";
        }

        double megaByte = kiloByte / 1024;
        if (megaByte < 1) {

            BigDecimal result1 = new BigDecimal(Double.toString(kiloByte));
            return result1.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "KB";
        }

        double gigaByte = megaByte / 1024;
        if (gigaByte < 1) {

            BigDecimal result2 = new BigDecimal(Double.toString(megaByte));
            return result2.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "MB";
        }

        double teraBytes = gigaByte / 1024;
        if (teraBytes < 1) {

            BigDecimal result3 = new BigDecimal(Double.toString(gigaByte));
            return result3.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "GB";
        }

        BigDecimal result4 = new BigDecimal(teraBytes);
        return result4.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "TB";
    }
}
SettingActivity中实现初始化缓存大小,并清除缓存

1.首先初始化布局,获取缓存大小

2.清除缓存

    /**
     * 创建Handler
     * 接收消息
     */
    @SuppressLint("HandlerLeak")
    private Handler handler = new Handler() {
        public void handleMessage(android.os.Message msg) {
            switch (msg.what) {
                case 0:
                    Toast.makeText(SettingActivity.this, "清理完成", Toast.LENGTH_SHORT).show();

                    try {
                        canch.setText(CacheDataManager.getTotalCacheSize(SettingActivity.this));
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
            }
        }
    };

    /**
     * 创建内部类,清除缓存
     */
    class clearCache implements Runnable {
        @Override
        public void run() {
            try {
                CacheDataManager.clearAllCache(SettingActivity.this);

                Thread.sleep(1000);

                if (CacheDataManager.getTotalCacheSize(SettingActivity.this).startsWith("0")) {

                    handler.sendEmptyMessage(0);
                }
            } catch (Exception e) {
                return;
            }
        }
    }
  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值