android 清除缓存方法
获得应用的存储信息
private void getAppStorageInfo(String packageName){StorageStatsManager storageStatsManager = (StorageStatsManager) context.getSystemService(Context.STORAGE_STATS_SERVICE);StorageManager storageManager = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE);List<StorageVolume> storageVolumes = storageManager.getStorageVolumes(); //app可能安装在外部存储上面,外部存储有一个唯一的UUID做区分UserHandle user = android.os.Process.myUserHandle();Log.d("zwt", ":::"+storageVolumes.size());try {for (StorageVolume storageVolume : storageVolumes) {final String uuidStr = storageVolume.getUuid();Log.d("zwt", "uuidStr:::"+uuidStr);final UUID uuid = uuidStr == null ? StorageManager.UUID_DEFAULT : UUID.fromString(uuidStr);StorageStats storageStats = storageStatsManager.queryStatsForPackage(uuid, packageName, user);//应用程序的大小。这包括 APK 文件、优化的编译器输出和解压的原生库long appBytes = storageStats.getAppBytes();//应用程序缓存数据的大小。这包括存储在 Context.getCacheDir() 和 Context.getCodeCacheDir() 下的文件long cacheBytes = storageStats.getCacheBytes();//应用程序所有数据的大小。这包括存储在 Context.getDataDir()、Context.getCacheDir()、Context.getCodeCacheDir() 下的文件long dataBytes = storageStats.getDataBytes();//主外部共享存储中所有缓存数据的大小。这包括存储在 Context.getExternalCacheDir() 下的文件long externalCacheBytes = storageStats.getExternalCacheBytes(); }}catch (PackageManager.NameNotFoundException | IOException e) {e.printStackTrace();}return ;}
需要声明权限
<!-- 获得app缓存大小 --><uses-permissionandroid:name="android.permission.PACKAGE_USAGE_STATS"tools:ignore="ProtectedPermissions" />
清除应用数据缓存
在公版设置中的位置
清除数据:\packages\apps\Settings\src\com\android\tv\settings\device\apps\ClearDataPreference.java
清除缓存:\packages\apps\Settings\src\com\android\tv\settings\device\apps\ClearCachePreference.java

位置:\packages\apps\\Settings\src\com\android\tv\settings\device\apps\AppManagementFragment.java


主要调用方法,这两个方法都是不能被第三方应用调用的方法,必须是系统级的应用,且有系统的签名,第三方只能用反射的方法调用
am.clearApplicationUserData(packageName, new ClearUserDataObserver());
pm.deleteApplicationCacheFiles(packageName, new ClearUserDataObserver());


这两个方法要传入一个aidl服务,来回调通知数据是否清除成功
1.导入aidl
位置: frameworks/base/core/java/android/content/pm/IPackageDataObserver.aidl
将此aidl文件复制到项目aidl文件夹下,注意包名保持一致
aidl说明:https://blog.csdn.net/weixin_44128558/article/details/112154294

2.实现
// 清除缓存public void clearCache(String packageName){if (context!=null){PackageManager pm = context.getPackageManager();pm.deleteApplicationCacheFiles(packageName, new ClearUserDataObserver());}else {Log.d(TAG, "clearCache() context is null");}}// 清除数据public void clearData(String packageName){if (context!=null){ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);boolean success = am.clearApplicationUserData(packageName, new ClearUserDataObserver());}else {Log.d(TAG, "clearData() context is null");}}//清除回调static class ClearUserDataObserver extends IPackageDataObserver.Stub {private final String TAG = "zwt:ClearUserDataObserver";@Overridepublic void onRemoveCompleted(String packageName, boolean succeeded) throws RemoteException {if (succeeded){Log.d(TAG, "清理成功");}else {Log.d(TAG, "清理失败");}}}// 卸载apkpublic void deleteApk(String packageName) {if (context == null){return ;}Uri uri = Uri.fromParts("package", packageName, null);Intent intent = new Intent(Intent.ACTION_DELETE, uri);intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(intent);}
轻松搞定
相关文章:
android 清除缓存方法
获得应用的存储信息 private void getAppStorageInfo(String packageName){StorageStatsManager storageStatsManager (StorageStatsManager) context.getSystemService(Context.STORAGE_STATS_SERVICE);StorageManager storageManager (StorageManager) context.getSystemS…...
介绍下你们项目中各微服务之间怎么调用的?
各微服务模块之间的数据交互主要通过一些常见的通信机制进行。以下是几种常见的数据交互方式: RESTful API:REST(Representational State Transfer)是一种基于HTTP协议的通信机制,它使用标准的HTTP方法(如…...
MySql提示:The Server Quit Without Updating PID File(…)失败 103.36.167
01问题 可能是 /usr/local/mysql/data/rekfan.pid 文件没有写的权限 。 解决办法 给予权限,执行 1. # chown -R mysql:mysql /var/data 2. #chmod -R 755 / usr/local/mysql/data 然后重新启动mysqld。 43.242.205 02问题 可能进程里已经存在…...
FPGA学习——按键消抖的两种实现方法
文章目录 一、按键消抖简介1.1、为什么要按键消抖 二、C4开发板原理图三、按键消抖源码3.1、方案一(每当检测到下降沿便开始重新计数)3.2、方案二(检测到第一次下降沿后便开始计数) 四、仿真代码及仿真波形图五、拓展:…...
SecureCRT如何将复制的内容粘贴到word中仍然保持原有字体颜色
SecureCRT如何将复制的内容粘贴到word中仍然保持原有字体颜色 QQ 109792317 说明:当SecureCRT加载了配色文件后,输出的关键字会被不同颜色高亮显示,但是如果复制粘贴到word中会发现成了纯文本,字体颜色消失了。 如何保留 &#x…...
微信小程序分享页面代码
在微信小程序中实现分享功能需要以下几个步骤: 1. 在app.json文件中配置分享参数,例如标题、路径等。示例如下: json { "pages": [ "pages/index/index" ], "window": { "navigationBarTit…...
Hadoop 之 Hbase 配置与使用(四)
Hadoop 之 Hbase 配置与使用 一.Hbase 下载1.Hbase 下载 二.Hbase 配置1.单机部署2.伪集群部署(基于单机配置)3.集群部署1.启动 hadoop 集群2.启动 zookeeper 集群3.启动 hbase 集群4.集群启停脚本 三.测试1.Pom 配置2.Yml 配置3.Hbase 配置类4.Hbase 连…...
使用TensorFlow和VGG-19模型实现艺术风格迁移:一步一步打造你的数字艺术世界
在当下的AI领域,神经风格迁移是最富有创新性和艺术性的技术之一。这项技术可以将一种图像的风格迁移至另一种图像,创造出让人眼前一亮的视觉效果。这种转变所展现的技术之美,让我们深感人工智能所带来的可能性。本文将带领大家一步步通过TensorFlow和VGG-19模型实现风格迁移…...
FBX/GLTF在线转换
3Dconvert是一个可以进行3D模型格式转换的在线工具,并支持3D模型在线预览和转换成果下载。网站访问地址:3D模型在线转换。 1、上传3D模型文件 3D模型在线转换工具的使用非常便捷,首先在网站首页选择需要转换的目标格式,网站支持…...
Tensorflow(二)
一、过拟合 过拟合现象:机器对于数据的学习过于自负(想要将误差减到最小)。 解决方法:利用正规化方法 二、卷积神经网络(CNN) 卷积神经网络是近些年来逐渐兴起的人工神经网络,主要用于图像分类、计算机视觉等。 卷积:例如对图片每一小块像素区域的处理ÿ…...
NoSQL之 Redis 部署,配置与优化
文章目录 NoSQL之 Redis配置与优化一.关系数据库与非关系型数据库1.关系型数据库2.非关系型数据库3.关系型数据库和非关系型数据库区别4.非关系型数据库产生背景 二.Redis简介1.了解Redis2.Redis 具有以下几个优点3.Redis为何这么快 三.Redis 安装及应用1.Redis 安装部署2.Redi…...
汽车行业 Y 公司对接斯堪尼亚 SCANIA EDI 项目案例
斯堪尼亚是一家来自瑞典的重型车辆制造公司,成立于1891年,总部位于斯德哥尔摩,主要专注于生产卡车、客车和工业发动机,以及相应的服务与解决方案。斯堪尼亚的产品以其高品质、可靠性和先进技术而闻名。其卡车广泛应用于货运和运输…...
mysql到doris踩坑记录(如果有问题希望大家帮忙指出问题)
1安装mysql(该步骤晚上很多,不做记录) 2安装docker(同上) 3安装并部署doris(下载镜像步骤省略) sudo docker run -p 9030:9030 -p 8030:8030 -p 8040:8040 \-itd starrocks.docker.scarf.sh/starrocks/allin1-ubuntu 官网地址从 Apache Flink 持续导入 Flink-c…...
苹果11手机设置手机跟踪功能
苹果11手机设置手机跟踪功能,就算是手机丢了,也能通过查询手机定位在哪里。 第一步:点击Apple ID进入详情 第二步:点击“查找” 第三步: 第四步: 到了这步,就算是设置成功。 下面需要到官方查询…...
下拉框可筛选可树状多选组件
实际效果图片 父页面 <el-form-item label"转发:" :label-width"formLabelWidth" class"formflex_item"><el-select ref"select" :clearable"true" clear"clearSelect" remove-tag"r…...
【LeetCode】70.爬楼梯
题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n 2 输出:2 解释:有两种方法可以爬到楼顶。 1. 1 阶 1 阶 2. 2 阶 示例 2…...
c#中的Math.Ceiling和Math.floor()和Math.Round()
Math.Ceiling(),只要有小数就加1(小数部分不为0) 例如: Math.Ceiling(0.0) -> 0 Math.Ceiling(0.1) -> 1 Math.Ceiling(0.2) -> 1 Math.Ceiling(0.3) -> 1 Math.Ceiling(0.4) -> 1 Math.Ceiling(0.5) -> 1 Math.Ceiling(0.6) -> 1…...
C++day7(异常处理机制、Lambda表达式、类型转换、STL标准库模板、迭代器、list)
#include <iostream>using namespace std; template <typename T> class vector { private:T* first;T* last;T* end; public:vector():first(new T),last(first),end(first){cout<<"无参构造"<<endl;}//无参构造vector(T* f):first(f),last…...
性能优化问题
提升首屏的加载速度,是前端性能优化中「最重要」的环节,这里笔者梳理出一些 常规且有效 的首屏优化建议 1、路由懒加载 SPA 项目,一个路由对应一个页面,如果不做处理,项目打包后,会把所有页面打包成一个文…...
【云原生系列】云计算概念与架构设计介绍
1 什么是云计算 云计算是一种基于互联网的计算模式,在这个模式下,各种计算资源(例如计算机、存储设备、网络设备、应用程序等)可以通过互联网实现共享和交付。云计算架构设计的主要目标是实现高效、可扩展、可靠、安全和经济的计算…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
vue3 daterange正则踩坑
<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...
ubuntu22.04 安装docker 和docker-compose
首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...
结构化文件管理实战:实现目录自动创建与归类
手动操作容易因疲劳或疏忽导致命名错误、路径混乱等问题,进而引发后续程序异常。使用工具进行标准化操作,能有效降低出错概率。 需要快速整理大量文件的技术用户而言,这款工具提供了一种轻便高效的解决方案。程序体积仅有 156KB,…...
