[教程] Anbdroid缓存清理原理 [复制链接]

转载 2013年12月02日 09:57:00

http://bbs.hiapk.com/forum.php?mod=viewthread&tid=4375070


这里说的清除是在软件中清理其它程序的缓存,有两种:
均用到反射这方面的知识,
一种是:Android系统API把这些方法隐藏了。用到反射知识
一种带root权限的:
Class c1 = Class.forName("android.content.pm.IPackageDataObserver");
Method method = pm.getClass().getMethod("deleteApplicationCacheFiles", String.class,IPackageDataObserver.class);
method.invoke(pm, packageName,new IPackageDataObserver.Stub(){
     @Override
    public void onRemoveCompleted(String packageName,
              boolean succeeded) throws RemoteException {
}
});

<uses-permission android:name="android.permission.DELETE_CACHE_FILES" />
一种是不用权限;一键清理:
private static 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;
      }
}
PackageManager pm = activity.getPackageManager();
Class[] arrayOfClass = new Class[2];
Class localClass2 = Long.TYPE;
arrayOfClass[0] = localClass2;
arrayOfClass[1] = IPackageDataObserver.class;
Method localMethod = pm.getClass().getMethod("freeStorageAndNotify", arrayOfClass);
Long localLong = Long.valueOf(getEnvironmentSize() - 1L);
Object[] arrayOfObject = new Object[2];
arrayOfObject[0] = localLong;
localMethod.invoke(pm,localLong,new IPackageDataObserver.Stub(){
  public void onRemoveCompleted(String packageName,boolean succeeded) throws RemoteException {
       // TODO Auto-generated method stub
  }
});

<uses-permission android:name="android.permission.CLEAR_APP_CACHE" />
下面的这个来自网上的清理软件就是用到了这个功能,不懂的下载的这个APP看一下就明白什么意思了~_~
device_cache.apk(168.41 KB, 下载次数: 57)

如何清理myeclipse自带的tomcat的缓存

由于好奇,就把project→Build Automatically取消了,导致不能自动编译,结果每次都需要重新启动server,修改的jsp才能正常显示。。。。。 MyEclipse 菜单 P...
  • H12KJGJ
  • H12KJGJ
  • 2017年06月02日 09:48
  • 1322

maven仓库清理缓存文件(dos工具)

1.使用过maven的人都应该知道,maven下载jar包时,有时由于网络问题,会造成文本未下载完毕,残留.lastUpdated文件,下次使用pom时,由于该jar包已被cached缓存,又无法更新...
  • leadseczgw01
  • leadseczgw01
  • 2016年11月25日 00:07
  • 5586

Android清理缓存工具类

安卓APP中清理缓存功能,不单单是系统优化工具之类的软件才有的。。。普通的APP也很常见要有显示缓存大小、清理缓存的功能。这种需求也相对比较简单,只是操作本应用的缓存目录罢了。安卓应用的缓存目录一般有...
  • zengd0
  • zengd0
  • 2016年09月21日 13:31
  • 1622

一个简单的Chrome浏览器“清理缓存”插件应用开发

Chrome浏览器支持用户自定义安装丰富的插件来方便我们的使用,特别是对于一个码农来说,一些丰富的插件能够很方便我们的使用。本人就安装了许多方便的插件。 固然商店里有很多插件让我们去淘,但是如果我...
  • github_36086968
  • github_36086968
  • 2017年04月28日 14:46
  • 2132

缓存清理策略

服务器,清理 虽然使用缓存思想似乎是一个很简单的事情,但是缓存机制却有一个核心的难点,就是——缓存清理。我们所说的缓存,都是保存一些数据,但是这些数据往往是会变化的,我们要针对这...
  • a236209186
  • a236209186
  • 2016年06月21日 19:10
  • 907

使用命令行清理Mac 释放磁盘空间

刚入职一家公司,Mac卡到爆!  然后呢?  有问题找度娘啊!!!!! 终于,功夫不负有心人,被我找到了这样一篇文章,非常好,非常实用,Mac立马飞起来!!! 转载自: http:/...
  • Scott_cc
  • Scott_cc
  • 2015年12月01日 14:28
  • 7154

清除C盘系统垃圾和缓存的批处理bat文件

转自:http://www.bk80.com/blog/783.html        系统在运行的时候,会产生大量的系统垃圾和缓存,比如我们在视频网站在线观看电影时,看似没有下载什么东西,其实...
  • duanyipeng
  • duanyipeng
  • 2013年03月10日 19:40
  • 11511

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

前言  在Android设备中,我们经常会看到与系统或者应用相关的清除功能有:清除数据、清除缓存、一键清理,这么多清除功能对于一个程序猿就够难理解了,偏偏很多安卓设备上都有这些功能,对于用户来说就更难...
  • zmywly
  • zmywly
  • 2015年03月24日 20:32
  • 5116

iOS清除缓存(OC实现)

//清除缓存按钮的点击事件 - (void)putBufferBtnClicked:(UIButton *)btn{ CGFloat size = [self folderSizeAtPat...
  • RuiWang321
  • RuiWang321
  • 2016年01月30日 12:11
  • 7860

webview和H5 清除缓存和缓存文件删除。

webview和H5 清除缓存和缓存文件删除。
  • menglele1314
  • menglele1314
  • 2015年05月19日 10:19
  • 5321
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[教程] Anbdroid缓存清理原理 [复制链接]
举报原因:
原因补充:

(最多只允许输入30个字)