获取应用程序缓存及一键清理

PB-数据窗口缓冲区与数据修改状态 1--缓冲区的介绍 在应用程序运行时,用户对数据窗口进行的操作情况是很复杂的,删除、插入、修改等操作有可能都会发生。记录哪些数据修改过、哪些数据需要删除、哪些数据是新增加的等等,都是很重要的工作,以便数据保存时能够正确修改数据库。这些工作都是由数据窗口缓冲区来完成的。 数据窗口在运行时要创建四个缓冲区,分别是主缓冲区、删除缓冲区、过滤缓冲区和原始缓冲区,这四个缓冲区各司 阅读详情

获取应用程序缓存及一键清理

  1. 什么是缓存呢?
    在手机ROM里面的缓存就是每个程序的cache文件夹

  2. 获取缓存思路(参考手机设置页面)
    通过PakcageManager.getPakcageSizeInfo()能得到程序的缓存,但是这个方法被隐藏了,而系统的Setting页面之所以能使用是因为它们的权限高,
    我们要想使用就必须通过反射来得到,这里getPackageSizeInfo()方法的第二个参数是一个远程的aidl文件。

    • 所以必须要在本地的工程中新建一个包,名字为android.content.pm
    • 拷贝IPakcageStatsObserver.aidl到该包中,导入后发现报错,是因为还要导入另外一个aidl文件PackageStats.aidl
  3. 获取缓存大小

    protected Void doInBackground(Void... params) {
        try {
            List<PackageInfo> infos = pm.getInstalledPackages(0);
            //pm.getInstalledApplications(flags);
            pb.setMax(infos.size());
            int total = 0;
    
            for (PackageInfo info : infos) {
                String packname = info.packageName;
                Method method = PackageManager.class.getDeclaredMethod(
                        "getPackageSizeInfo", new Class[] {
                                String.class,
                                IPackageStatsObserver.class });
                method.invoke(pm, new Object[] { packname,
                        new MyObserver(packname) });
                publishProgress("正在扫描:" + packname);
                total++;
                pb.setProgress(total);
                Thread.sleep(80);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    
    private class MyObserver extends IPackageStatsObserver.Stub {
        private String packname;
        public MyObserver(String packname) {
            this.packname = packname;
        }
        //回调方法,到得到状态之后就会调用该方法,我们可以通过PackageStats中的属性来得到缓存的大小
        public void onGetStatsCompleted(PackageStats pStats, boolean succeeded)
                throws RemoteException {
            long cache = pStats.cacheSize;
            long code = pStats.codeSize;
            long data = pStats.dataSize;
            if (cache > 0) {
                cacheInfo.put(packname, cache);
            }
        }
    }
  4. 缓存清理
    得到每个程序的缓存大小后,该怎么去清理程序的缓存呢?调用PackageManager.deleteApplicationCacheFiles,这个方法是隐藏的,我们通过反射来执行但是发现需要权限,
    设置权限后还是提示需要权限,这是因为没有系统权限我们不能清理,设置页面之所以能够使用这个方法,因为是系统的API,
    所以我们只能是点击条目之后跳转到系统的设置页面,让通过设置页面来删除缓存.

  5. 一键清理
    一键自动清理使用freeStorageAndNotify方法,该方法能够向系统申请释放多大的内存,系统会根据你申请的大小,尽可能的去是释放可以释放的大小。

    public void cleanAll(View view) {
        try {
            Method[] ms = PackageManager.class.getDeclaredMethods();
            for (Method m : ms) {
                if ("freeStorageAndNotify".equals(m.getName())) {
                    m.invoke(pm, new Object[] { Long.MAX_VALUE,
                            new MyDataObersver() });
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }       
    }
    
    //这是一个aidl
    private class MyDataObersver extends IPackageDataObserver.Stub {
        public void onRemoveCompleted(String packageName, boolean succeeded)
                throws RemoteException {
        }
    }

  • 邮箱 :charon.chui@gmail.com
  • Good Luck!
Win10系统缓存清理全攻略:释放空间,提升速度 定期清理Win10系统缓存是保持电脑高效运行的重要措施。通过手动清理和使用C盘一键清理工具,用户可以轻松释放磁盘空间,提升系统性能。定期清理:建议每月至少进行一次系统缓存清理,以保持系统整洁。备份数据:在清理前,最好备份重要数据,以防误删导致数据丢失。谨慎选择清理工具:选择正规渠道下载清理工具,避免下载到恶意软件。注意清理范围:在清理时,注意勾选要清理的文件类型,避免误删重要文件。通过遵循以上步骤和建议,用户可以轻松清理Win10系统缓存垃圾,释放更多运作空间,提升电脑的运行速度。 阅读详情

相关推荐

一键清除firefox cookie和缓存插件

自己做的一个插件,做web测试的同学非常有用,一键删除cookie和缓存

PB中数据窗口的数据缓冲区[转]

PB中数据窗口的数据缓冲区http://developer.51cto.com  2006-11-10 15:32  张诚/马小倩/单立新  豆豆学园  我要评论() PowerBuilder中数据窗口的数据缓冲区应用广泛,本文简述了PB中数据缓冲区的原理和状态。 DATAWINDOW的四个缓冲区在PowerBuilder中,Da

web_service的专栏 616

使用模拟工具Modbus poll 和PLC 通讯

使用模拟工具Modbus poll 和PLC 通讯 简介 Modbus Poll 是一个模拟Modbus 主站的工具。不用在现场调试,在家也能使用,方便快捷的调试验证程序。使用它可以和PLC进行Modbus TCP /RTU 通讯等功能,接下来为大家介绍使用Modbus Poll 和 PLC 进行 Modbus TCP 通讯。 组态PLC PLC作为我们的从站和Modbus Poll 通讯,那我们组态一个PLC。 创建通信DB 创建一个DB块,在数据类型处输入:TCON_IP_V4

weixin_61398412的博客 1万+

分享一条宝塔PBOOTCMS自动清理rumtime缓存目录的SHELL脚本

PBOOTCMS会产生缓存,但建站多的,用二级目录更多的伙伴更加的会感到头疼,虽然现在最新版出来了三天自动清理功能,那么如果你有几百个站呢,你不去清理服务器的磁盘内存早晚会崩,如果你想清理呢,还得去更新去升级,升级后才能实现自动清理,很麻烦的。 这一条SHELL脚本是PB2345付费请教的,免费分享出来,主要针对宝塔面板【当然也可以用作搜寻删除其他统一文件夹目录】

weixin_45456642的博客 2135

QTableView实现表格加载百万条数据

本文介绍用QTableView实现加载100万条数据显示到表格。 1.创建工程 用Qt Creator创建Qt Widgets Application项目,基类选择QWidget,创建好了,如图: 2.添加QTableView控件 在widget.ui中添加QTableView控件,和QPushButton,采用栅格布局,如图: 3.添加函数 头文件 QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACE class Wid

丁爸的博客 8272

RK3588S Andriod12调试OLED屏幕背光

4,kernel-5.10/drivers/gpu/drm/drm_mipi_dsi.c中mipi_dsi_dcs_set_display_brightness函数就是调节亮度的地方。这一步很重要,因为上层调节背光时就是操作的这个背光设备节点(/sys/class/backlight/backlight),如果名字不对,上层调用的通路就没有打通。之后在dcs_bl_update_status函数中做个映射,通过调整brightness_table中的值就可以对背光亮度的调节曲线作出调整。

u011774634的博客 4429

android 清楚app缓存数据,android 获取其他应用程序的缓存大小以及清理应用缓存...

最近在做appStore时,涉及到一个第三方app下载视频后将车机存储撑爆的问题,从而影响到我们车机自带的app使用,问题很是严重,于是就需要提供缓存清理以及垃圾清理的功能,当用户使用第三方app时,存储空间达到一定量的时候会提示用户去清理,否则不允许使用第三方app。缓存获取获取各个应用程序的缓存大小,可以通过使用PackageManager.getPackageSizeInfo方法来获取,但是...

weixin_36042403的博客 1337

Q&A | ZStack替代VMware实问实答

ZStack替代VMware实问实答

zstack_org的博客 1801

Android 一键清理内存,缓存,文件代码

一键清理工具类:主要清理 1.系统的内存 2.App的缓存 3.系统的临时文件 .apk .log .tmp .temp .backpackage com.hitv.process;import

ByByOver的专栏 8840

ROS相机内参标定详细步骤指南

相机标定的目的是为了确定相机内部参数和外部参数,以便修正图像并将图像坐标映射到世界坐标,或者从世界坐标映射到图像坐标。这个过程是计算机视觉和三维感知任务的关键步骤之一,它有以下主要目的: 1. **减小畸变**:相机镜头和传感器可能引入径向和切向畸变,使得图像中的直线变得弯曲或者物体的形状不准确。通过标定相机,可以矫正这些畸变,使图像更准确。

m0_56661101的博客 1万+

如何通过常规测井曲线识别砂岩、泥岩、碳酸盐岩和煤层

常规测井曲线通过不同岩性的物理性质差异识别砂岩、泥岩、碳酸盐岩和煤层。砂岩表现为低自然伽马(GR)、中等密度(RHOB)和声波时差(DT);泥岩以高GR、高中子(NPHI)和高DT为特征;碳酸盐岩显示低GR、高RHOB和低DT;煤层则具有极低RHOB、极高NPHI和DT的独特组合。综合GR与三孔隙度曲线(RHOB、NPHI、DT)可有效区分岩性,其中密度测井对煤层识别最可靠。电阻率(RT)曲线辅助判断流体性质,但需结合其他参数综合分析。

love code, love life. 2597

手机安全卫士——缓存清理

CleanCacheActivity.java /** * 缓存清理*/ public class CleanCacheActivity extends Activity { private PackageManager packageManager; private List<CacheInfo> cacheLists; private ...

weixin_34301132的博客 109

生存曲线绘制及图例标签添加(使用R语言)

数据应该包含两列:一个是表示个体生存时间的时间变量(通常称为"时间(time)“)和一个是表示个体是否发生事件(如死亡)的事件变量(通常称为"事件(event)”)。通过修改上述代码中的数据和参数,您可以根据自己的需求绘制生存曲线,并添加相应的图例信息和标签。生存曲线是在生存分析中常用的工具,用于描述一组个体随时间的存活概率。函数的第一个参数指定图例的位置,这里我们选择了右上角(“topright”)。包来进行生存曲线的绘制,并通过添加图例信息和标签来增强可视化效果。的数据框,包含这两列数据。

CyberXZ的博客 558

android 获取其他应用程序的缓存大小以及清理应用缓存

最近在做appStore时,涉及到一个第三方app下载视频后将车机存储撑爆的问题,从而影响到我们车机自带的app使用,问题很是严重,于是就需要提供缓存清理以及垃圾清理的功能,当用户使用第三方app时,存储空间达到一定量的时候会提示用户去清理,否则不允许使用第三方app。缓存获取获取各个应用程序的缓存大小,可以通过使用PackageManager.getPackageSizeInfo方法来获取,但是它

大牛也是从菜鸟开始的 8488

dolphinscheduler-3.4.0

dolphinscheduler集群部署

docsz的博客 661

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Android缓存处理和清除数据、清除缓存、一键清理的区别

在Android设备中,我们经常会看到与系统或者应用相关的清除功能有:清除数据、清除缓存、一键清理,这么多清除功能对于一个程序猿就够难理解了,偏偏很多安卓设备上都有这些功能,对于用户来说就更难理解,趁着在把玩手机的时候想到了这一点,索引追根究底了解他们的具体区别。 清除数据、清除缓存、一键清理的区别 清除数据   清除数据主要是清除用户配置,比如SharedPre

wangyaqian1212的博客 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Flutter 获取应用缓存和清理缓存

Flutter 获取应用缓存和清理缓存   在 Android 和 iOS 中,都有需要获取应用缓存和清除应用缓存的功能,那么在 Flutter 里面应该怎么做呢?   要想获取到应用缓存,我们就必须找到用来装缓存数据的文件夹,所以这里我们需要引入 path_provider , 用来获取 Android 和 iOS 的缓存文件夹,然后再根据文件循环计算出缓存文件的大小。   首先,我们先简单介绍...

H.A.N的博客 9086

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Android清除数据、清除缓存、一键清理的区别

前言  在Android设备中,我们经常会看到与系统或者应用相关的清除功能有:清除数据、清除缓存、一键清理,这么多清除功能对于一个程序猿就够难理解了,偏偏很多安卓设备上都有这些功能,对于用户来说就更难理解,趁着在把玩手机的时候想到了这一点,索引追根究底了解他们的具体区别。清除数据、清除缓存、一键清理的区别清除数据  清除数据主要是清除用户配置,比如SharedPreferences、数据库等等,这些

mingy的专栏 1万+

Android开发——获取应用数据/缓存大小并清理缓存

1.获取应用数据/缓存大小 其中pm为实例化的PackageManager,因为需要遍历所有的已安装的应用。因此需要开启子线程进行处理。 还有需要注意的是,在Android4.2之前getPackageSizeInfo方法参数是没有第二个int类型的参数的,贴出来的代码适合4.2以后的版本,在反射获取方法时,增加了userHandle的参数信息。至于增加的参数userHandle的解...

关于Android开发的一些技术点总结 ╮( ̄▽ ̄”)╭ 1万+

android 一键清除 清理

前言   在Android设备中,我们经常会看到与系统或者应用相关的清除功能有:清除数据、清除缓存、一键清理,这么多清除功能对于一个程序猿就够难理解了,偏偏很多安卓设备上都有这些功能,对于用户来说就更难理解,趁着在把玩手机的时候想到了这一点,索引追根究底了解他们的具体区别。 清除数据、清除缓存、一键清理的区别 清除数据   清除数据主要是清除用户配置,比如Shar...

拒绝背八股文 3476

如何实现手机缓存清理的功能

android手机上的杀毒软件或者是手机管家等类似应用都会有垃圾清理的功能, 那么清理的缓存文件是什么? 怎么去找出应用的缓存文件并将他们清理, 在这里我将介绍如何实现手机垃圾文件清理的功能。 缓存文件是什么,缓存文件的目录在那里? 我们知道方法: getCacheDir()的路径是 /data/data/包名/cache/

lbcab的博客 5264

获取app缓存大小,以及清理缓存

public class DataCleanManager { /** * 获取缓存大小 * @param context * @return * @throws Exception */ public static String getTotalCacheSize(Context context) throws Exceptio...

yuqingsen的博客 731

Linux下清理缓存

Linux下清理缓存 如果感觉手动清除缓存有点慢的话,可以写一个定时清除缓存的脚本 1、查看缓存 free -h 2、清理缓存 [root@hecs-360960 kafka]# sync [root@hecs-360960 kafka]# echo 3 > /proc/sys/vm/drop_caches 我们在清理缓存前应该先sync下 因为系统在操作的过程当中,会把你的操作到的文件资料先保存到buffer中去,因为怕你在操作的过程中因为断电等原因遗失数据,所以在你操作过程中会把文件资料先缓

你我皆是黑马 2万+
上一篇: 获取位置(LocationManager)
下一篇: 开发中Log的管理
CharonChui
博客等级 码龄12年 66粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值