HarmonyOS 鸿蒙Next如何获取应用程序缓存大小,并清除缓存

发布于 1周前 作者 bupafengyu 来自 鸿蒙OS

HarmonyOS 鸿蒙Next如何获取应用程序缓存大小,并清除缓存

在手机的设置页面,会获取本应用的缓存大小进行显示,用户选择清除时,会清除此应用的缓存 有相关的api吗?

2 回复
查询缓存用storageStatistics.getCurrentBundleStats()接口,参考链接: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-file-storage-statistics-V5#storagestatisticsgetcurrentbundlestats9

清除文件缓存,需要调用context的cacheDir获取缓存,然后调用系统文件fs接口,判断是文件或者文件夹,再分别消除缓存

清理缓存demo:

import fs from '@ohos.file.fs';
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Clear_cache {
  clearCache() {
    let cacheDir = getContext(this).cacheDir
    fs.listFile(cacheDir).then((filenames) => {
      for (let i = 0;i < filenames.length; i++) {
        let dirPath = `${cacheDir}/${filenames[i]}`
        // 判断是否文件夹
        let isDirectory = false
        try {
          isDirectory = fs.statSync(dirPath).isDirectory()
        }
        catch (e) {
          console.log(e)
        }
        if (isDirectory) {
          fs.rmdirSync(dirPath)
        } else {
          fs.unlink(dirPath).then(() => {
            console.info('remove file succeed');
          })
        }
      }
    })
  }
}

cacheSize包含以下几个目录,仅清理应用沙箱路径下的cache还显示有大小是正常规格。

/data/storage/el1/base/cache

/data/storage/el1/base/haps/entry/cache

/data/storage/el2/base/cache

/data/storage/el2/base/haps/entry/cache

获取这4个路径的方式如下:

let moduleContext: common.Context;

moduleContext = context.createModuleContext('entry');

///data/storage/el2/base/cache

let cachePathOne = moduleContext.cacheDir;

///data/storage/el2/base/haps/entry/cache

let cachePathTwo = context.cacheDir;

//切换加密等级

moduleContext.area = contextConstant.AreaMode.EL1;

///data/storage/el1/base/cache

let cachePathThree = moduleContext.cacheDir;

context.area = contextConstant.AreaMode.EL1;

///data/storage/el1/base/haps/entry/cache

let cachePathFour = context.cacheDir;

//切换回默认加密等级

moduleContext.area = contextConstant.AreaMode.EL2;

是可以获取缓存的具体大小的,

appSize: app数据大小(不包含空目录)(单位为Byte)

cacheSize: 缓存数据大小(单位为Byte)

dataSize: 应用总数据大小(单位为Byte)

参考链接: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-file-storage-statistics-V5#bundlestats9

作为IT专家,对于HarmonyOS鸿蒙Next如何获取应用程序缓存大小并清除缓存的问题,提供以下专业解答:

在HarmonyOS鸿蒙Next系统中,可通过以下步骤获取应用程序缓存大小并清除缓存:

  1. 获取缓存大小

    • 使用StorageStatsManager类获取应用的存储统计信息。
    • 调用queryStatsForPackage方法,并传入应用的包名和UserHandle.getUserHandleForUid(uid),获取特定用户的存储统计。
    • 从返回的StorageStats对象中,利用getCacheBytes()方法获取缓存大小。
  2. 清除缓存

    • 使用Context的deleteCacheFiles()方法直接删除应用的内部缓存文件。
    • 若需删除外部缓存(如存储在公共存储中的缓存),则需手动查找并删除这些文件。可通过调用context的cacheDir获取缓存目录,然后使用系统文件fs接口判断并删除文件或文件夹。

请注意,执行上述操作需获取相应的权限,如PACKAGE_USAGE_STATS权限及应用自身的存储权限。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部