android缓存清理

Android应用缓存清理利器:WorkManager深度实践指南 合理设置约束条件避免在设备资源紧张时执行优先选择充电+空闲+WiFi场景优化清理策略分批次处理大目录保留近期缓存根据设备性能调整参数完善监控体系记录清理任务执行情况监控清理耗时和资源占用实现异常上报机制用户透明原则提供清理设置选项重要数据清理前确认长时间任务使用前台服务多场景测试低电量模式测试存储空间不足测试设备重启恢复测试。 阅读详情
/**
* 获取包名的应用缓存 在生命周期方法onCreate中先调用一次getCacheSize( );
PackageManager pm = getActivity().getPackageManager();
List<PackageInfo> infos = pm.getInstalledPackages(0);
for (PackageInfo info : infos) {
getCacheSize(info);
}
* @param packgeName
*/

public void getCacheSize(PackageInfo packgeInfo) {
try {
Method myUserId = UserHandle.class.getDeclaredMethod("myUserId");
// 4.2 后需要一个int 类型的参数 从UserHandle(解释:应再保险用户信息)中获取
int userID = (Integer) myUserId.invoke(pm,null);
Method method = PackageManager.class.getDeclaredMethod("getPackageSizeInfo", String.class, int.class, IPackageStatsObserver.class);
method.invoke(pm, packgeInfo.packageName, userID, new MyPackObserver(packgeInfo));
} catch (Exception e) {
e.printStackTrace();
}
}


private class MyPackObserver extends android.content.pm.IPackageStatsObserver.Stub{
private PackageInfo packgeInfo;
public MyPackObserver(PackageInfo info){
this.packgeInfo = info;
}


@Override
public void onGetStatsCompleted(PackageStats pStats, boolean succeeded)
throws RemoteException {
long cachesize = pStats.cacheSize;//缓存大小
long datasize = pStats.dataSize;//数据大小
long codesize = pStats.codeSize;//应用代码(包)大小
if (flag == true) {//有的应用是默认有12KB缓存的 清理不了,只能加个判断
//flag  是否第一次清理缓存,true: 是   ,  false: 不是;   第一次清理操作过后flag =false;
if (cachesize > 0) {
CacheInfo info = new CacheInfo();//实例化创建的bean对象
info.setAppName(packgeInfo.applicationInfo.loadLabel(pm).toString());
info.setIcon(packgeInfo.applicationInfo.loadIcon(pm));
info.setCacheSize(cachesize);
cacheInfos.add(info); //cacheInfos是一个List<CacheInfo> //视图布局使用List View还是其他自定一个,显示时return cacheInfos.size();
}
} else {
if (cachesize > 12288) {//大于12KB  //第二次清理获取  排除默认有12KB缓存的应用
CacheInfo info = new CacheInfo();
info.setAppName(packgeInfo.applicationInfo.loadLabel(pm).toString());
info.setIcon(packgeInfo.applicationInfo.loadIcon(pm));
info.setCacheSize(cachesize);
cacheInfos.add(info);
}
}
}
}


/**
*bean对象 最好单独创建一个类
*/

public class CacheInfo {
private String appName;
private long cacheSize;
private String packgeName;
private long dataSize;
private long codeSize;
private Drawable icon;
// get( ) -- set( ) -- 以及toStirng( )方法省约
}


/**
* 清理缓存
*/

private void deleteAllCache() {
Method[] methods = PackageManager.class.getMethods();
Long localLong = Long.valueOf(getEnvironmentSize() - 1L);
Object[] arrayOfObject = new Object[2];
arrayOfObject[0] = localLong;
for(Method method : methods){
if( "freeStorageAndNotify".equals(method.getName()) ) {
try {
method.invoke(pm, localLong, new MyPackageDataObserver());//Integer.MAX_VALUE * 100 实测不适合真机4.2版本以上换成localLong,
} catch (Exception e) {
e.printStackTrace();
}
return;
}
}
}


/**
* @return 所有缓存数据
*/


private long getEnvironmentSize() {
File localFile = Environment.getDataDirectory();
long l1;
if (localFile == null)
l1 = 0L;
while (true) {
String str = localFile.getPath();
StatFs localStatFs = new StatFs(str);
long l2 = localStatFs.getBlockSize();
l1 = localStatFs.getBlockCount() * l2;
return l1;
}

 

}



private class MyPackageDataObserver extends IPackageDataObserver.Stub{
@Override

public void onRemoveCompleted(String packageName, boolean succeeded) throws RemoteException {

getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
//清理完成 执行UI操作
});
}
}


 

如果导不了IPackageStatsObserver, IPackageDataObserver 包 参照图片上做

之前没有创建github项目,我的demo地址:GitHub - YangSion/RunAndroid: 系统工具:手机检测,缓存清理,进程释放与软件管理

Android清理应用缓存数据的方法 在Android 8.0及以上版本中,使用PackageManager的deleteApplicationCacheFiles()方法来删除应用的缓存数据。而在Android 8.0以下的版本中,我们通过递归删除应用缓存目录下的所有文件来实现清理缓存数据的功能。在Android开发中,清理应用缓存数据是一个常见的需求。我们使用了不同的逻辑来处理Android 8.0及以上版本和Android 8.0以下版本的情况,并提供了相关的源代码示例。通过清理应用的缓存数据,可以提高应用的性能并释放设备的存储空间。 阅读详情

相关推荐

Android app缓存清理实现

Android app缓存清理,封装了一个获取和清理缓存的工具类,可以直接使用,简化了开发的麻烦。

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

使用过程中可能会遇到应用程序或软件更新失败,因为用户的智能手机存储空间不足。 由于应用程序崩溃和其他问题,用户的数字设备运行速度比以前慢。 所有这些问题都是由于用户的存储空间不足造成的。 实际上,即使用户购买了128 GB或256 GB的手机,删除垃圾文件仍然很重要 在Android手机上 定期。因此,本文给大家分享一下,在研发app中常用的清除缓存数据和应用数据的功能如何实现? 缓存数据表示应用或网站存储在Android手机或平板电脑中的所有媒体文件。 因此,每次使用应用程序时,它都会自动保存包括文件,图

拉莫帅的博客 6860

Android实现清除应用缓存功能

本文实例为大家分享了Android清除应用缓存的具体代码,供大家参考,具体内容如下 import android.content.Context; import android.os.Environment; import java.io.File; import java.math.BigDecimal; /** * 获取缓存大小并清理缓存 */ public class DataCleanManagerUtils { /** * Context.getExternalFilesDir() --> SDCard/Android/data/你的应用的包名/files/ 目录,一般放

android缓存清理demo,手机APP缓存的获取和清理功能的实现

package com.loaderman.appcachedemo;import android.content.pm.IPackageDataObserver;import android.content.pm.IPackageStatsObserver;import android.content.pm.PackageManager;import android.content.pm.Pac...

weixin_39566578的博客 712

高通Camera PDAF调试实战:从Type2到Type3的避坑指南与Log分析技巧

本文深入解析高通Camera平台PDAF调试实战,重点对比Type2与Type3的核心差异,提供详细的配置迁移方案和Log分析技巧。针对常见兼容性问题如对焦速度变慢、低光失效等,给出具体解决方案,并分享性能优化案例与高级调试工具链,帮助开发者快速提升PDAF调试效率。

weixin_29164185的博客 413

VisionMaster SDK C#二次开发核心技术指南

以下是基于**VisionMaster SDK C#二次开发核心技术指南**,结合实战案例与关键代码解析,帮助开发者快速掌握工业视觉应用集成。

东城十三 3061

2024年Android最全android 清除缓存功能,非科班面试之旅

其实客户端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。(以下体系的复习资料是我从各路大佬收集整理好的)《Android开发七大模块核心知识笔记》《960全网最全Android开发笔记》《379页Android开发面试宝典》历时半年,我们整理了这份市面上最全面的安卓面试题解析大全包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。

2401_84123201的博客 969

【Kingbase人大金仓】授权文件更换

本文介绍了金仓数据库授权文件更换的步骤:1.通过ksql或客户端工具查询数据库版本;2.在官网下载对应版本的license.bat文件;3.替换前先备份原授权文件(使用tar命令压缩),再用新文件覆盖原文件。注意事项包括:版本号需严格对应,授权文件通常位于安装目录下,可使用find命令查找具体位置。操作需谨慎,建议先备份原文件以便恢复。

qq_34463511的博客 3464

android缓存清理代码,安卓缓存清除和计算

官方提供的方法中,计算缓存和清除缓存 貌似对安卓系统没有效果,以下是采用原生安卓提供的方法,供有需要的同学参考,自己只有一台魅族手机,不知在其他机型上是否通用。以下是代码:var Intent = null,File = null,Uri = null,main = null;var cacheCaleState=false;var os=null;mui.plusReady(function()...

weixin_34567845的博客 1125

【数电课程设计】---出租车计价器

文章目录1、任务要求2、方案3、收获 1、任务要求 2、方案 3、收获

LZY 1万+

会计引擎:交易与核算分离的前世今生

一、为什么需要会计引擎 金融产品的设计,一如一块硬币需要兼顾两面:一面是为客户提供好的金融服务,满足客户支付结算、借贷、资产保值增值等方面的需求,并在这个过程中,以数字化的方式做好客户资产的登记,登记的载体,则是“分户”或“台账”,如客户存款户,是一种典型的分户--资金的增减变化都在一个账户中进行体现,而客户购买的银行理财,因为收益率、期限、投资标的不同,每一笔持有就形成一行记录,即为“台账”--这当然是不严谨但相对形象的表述。但是,“分户”和“台账”并没有必然的区别,以贷款为例,一些银行仍然存在所谓“

银行信息系统应用架构详解 985

android手机 手动 清理缓存,安卓手机缓存怎么清理_安卓手机清理缓存的具体步骤-系统城...

安卓手机使用时间久了之后,一些软件会产生较多的缓存,从而导致手机运行速度变慢,所以我们就需要来清理这些缓存,但有的网友不太清楚安卓手机缓存怎么清理,所以今天小编为大家整理分享的就是关于安卓手机清理缓存的具体步骤。具体步骤如下:1、首先打开手机,找到手机的设置选项,点击进入。2、在设置中找到更多设置,点击进入更多设置。3、在更多设置中,找到应用程序,点击进入应用程序界面。4、在应用程序中,可以看到已...

weixin_29356805的博客 4258

03 Token、Embedding、上下文窗口:开发者必须懂的三个基本概念

Token、Embedding 和上下文窗口是大模型应用开发的三个基础概念。本文从成本、速度、检索和上下文设计四个角度讲清它们的工程意义,帮助开发者理解为什么同一段内容会超限、变贵,为什么 RAG 能做语义检索。

老于的笔记的专栏 409

android手机apk缓存,uniapp安卓缓存计算、缓存清理

官方有个未显示的文档http://www.html5plus.org/doc/zh_cn/cache.html用于管理应用缓存但有些方法在uniapp上报错感谢二位大佬提供的文章师大酸梅杨https://ask.dcloud.net.cn/article/1191绝地求生https://ask.dcloud.net.cn/article/13375通过两位大佬的文章结合做出一个在uniapp安卓系...

weixin_42297519的博客 565

扩散模型实战:从零开始训练手写数字生成模型

手写数字的数据集是绝大部分炼丹师的深度学习初恋,这篇博客以代码为主,手把手带读者搭建一个基于扩散模型的手写数字生成模型,非常适合刚接触扩散模型的初学者学习。

沉迷单车的追风少年 1914

Docker Desktop 从 C 盘迁移到 D 盘的正确方法

本文介绍了三种将Docker数据目录从C盘迁移到D盘的方案。方案1针对WSL2用户,通过导出/导入虚拟磁盘实现迁移;方案2采用软链接方式,适合所有Docker模式;方案3则建议重装Docker到D盘。其中WSL2迁移方案(方案1)最为稳定可靠,推荐使用。文章详细说明了各方案的操作步骤及注意事项,并提供了迁移后常见问题的解决方法,帮助用户彻底解决Docker占用C盘空间的问题。

sg_knight的专栏 2178

android app 清理缓存图片,支付宝APP怎么清理缓存 支付宝安卓版缓存清理方法

当今社会支付方式已经越来越便捷化了,普通的现金支付方式已经逐渐被人们放弃,现在大部分朋友们都会使用支付宝APP进行手机移动支付。相信大家都知道,这款软件除了支付功能以外,还有许多其他功能,而这些功能往往都会涉及到一些图片和视频的加载和查看,随着时间推移,我们的缓存会越积越多,严重地影响了我们的手机内存和运行速度,所以,为了避免这种情况的方式,小编今天将教大家一种支付宝清理缓存的方法,有需要的朋友赶...

weixin_29717875的博客 641

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

无需root,清除清理安卓,android的cache,缓存

package com.agj.test; import java.io.File; import java.lang.reflect.Method; import android.content.Context; import android.content.pm.IPackageDataObserver; import android.content.pm.PackageManager;

icewst的专栏 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Android微信页面缓存清理,安卓用户如何彻底清理微信大量缓存?4招让你彻底解决内存烦恼...

原标题:安卓用户如何彻底清理微信大量缓存?4招让你彻底解决内存烦恼作为一个64G版的安卓用户,现在隔三差五就要对手机的内存进行清理,更不用说还在用16G的你了。如果经常出现手机的提醒你的存储容量几乎已满时,你是不老是跟小编以前一样去相册里删除一些照片或者去卸载一些APP呢?但是这些效果都是不明显的。下面小编就教你几个技巧来缓解这些烦恼。一、初级技巧:清理微信缓存相信大多数人都是采用的是这种方法,这...

weixin_42303522的博客 2901

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

android 清理缓存功能 的实现,android实现清理缓存功能

android之清理缓存实现,供大家参考,具体内容如下一. 清理缓存首先要搞清楚清理哪些东西1、app本身的功能比如录像,录音,更新都会产生文件,需要清理2、app的默认缓存地址cache二. 搞清楚要清理的文件夹位置1、首先app自身的功能就要看自己把它放在了什么位置2、默认缓存地址:getActivity().getExternalCacheDir();这个位置是在storage/emulat...

weixin_32820805的博客 4177

android清理缓存实现,android之清理缓存实现

/*** 获取app的缓存大小* 1. 录制的视频/storage/emulated/0/xueliangapp/video/1573972925136.mp4* 2. 录制的音频/storage/emulated/0/xueliangapp/radio/1573972925136.amr* 3. 下载的更新包/storage/emulated/0/Android/data/com.sdxzt.x...

weixin_32721919的博客 4522

android清理缓存功能吗,android实现清理缓存功能

android之清理缓存实现,供大家参考,具体内容如下一. 清理缓存首先要搞清楚清理哪些东西1、app本身的功能比如录像,录音,更新都会产生文件,需要清理2、app的默认缓存地址cache二. 搞清楚要清理的文件夹位置1、首先app自身的功能就要看自己把它放在了什么位置2、默认缓存地址:getActivity().getExternalCacheDir();这个位置是在storage/emulat...

weixin_36326408的博客 1947

Android微信页面缓存清理,安卓微信浏览器缓存如何清理

前言:缓存这个问题的出现,真真切切的感受到微信浏览器这鬼东西对前端程序员充满了恶意,捋捋自己的发型,甚是恐慌(顿时有种想转php的冲动,有木有)。解决方案:出现缓存问题导致用户出现很多车祸现场(还和java叼起来了),因为是上线了的项目,为了不破环生产环境,让客服暂时教用户解决微信缓存问题。手动清理缓存微信浏览器在ios和安卓中浏览器内核不一样;从而不同的系统和不同版本的微信方式也各有不同。清理缓...

weixin_27012007的博客 1349
下一篇: onActivityResult,startActivityForResult,setResult用法解决从后一个activity带参数跳转到前一个activity
YangSion.
博客等级 码龄12年 2粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值