前言

最近,做了一个清理android系统(基于6.0的一个定制系统)的内存等清理相关的模块,里面涉及到该系统的运行的相关进程清理和各个应用的缓存清理(提前说一下,需要系统签名,然后push 到系统目录中);由于6.0后,非本应用的data/data等目录都是不可读写的目录,当然这是为了应用安全,完全可以理解,所以清理这部分缓存的时候,就需要使用系统权限或者叫root权限

功能说明

能够将当前系统中正在运行的非系统进程清理掉

能够清理各大应用的缓存数据

UI实现

这里根据UI需求,做了一个简单的清理加速动画

11.gif

清理逻辑

因为只针对6.0系统来做的,所以,这里就只贴了6.0的代码,其余版本的,请自行google解决

下面是杀死进程释放内存的关键方法,需要利用反射和系统签名:

/**

* Kill掉某个正在运行的应用

* @param context

* @param packageToKill

*/

private void killAppByPackage(Context context, String packageToKill) {

List packages;

PackageManager pm;

pm = context.getPackageManager();

//get a list of installed apps.

packages = pm.getInstalledApplications(0);

ActivityManager mActivityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);

//利用killBackgroundProcesses方法(API > 8)

for (ApplicationInfo packageInfo : packages) {

if ((packageInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 1) {

continue;

}

if (packageInfo.packageName.equals(packageToKill)

&& mActivityManager != null) {

mActivityManager.killBackgroundProcesses(packageInfo.packageName);

}

}

//利用反射调用forceStopPackage方法

//需要android.permission.FORCE_STOP_PACKAGES权限

//需要系统签名

try {

Method method = Class.forName("android.app.ActivityManager").getMethod("forceStopPackage", String.class);

method.invoke(mActivityManager, packageToKill);

}catch (Exception e) {

e.printStackTrace();

}

}

清理缓存逻辑,也需要利用反射和几个aidl文件,如,获取缓存大小需要用到IPackageStatsObserver.aidl等

利用PackageManager中的deleteApplicationCacheFiles()方法来删除应用中的缓存

/**

* 删除App Cache

* @param context

* @param pkgName

* @param observer

*/

public static void delAppCache(Context context, String pkgName, IPackageDataObserver.Stub observer){

try{

if (observer != null) {

PackageManager pm = context.getPackageManager();

Method deleteApplicationCacheFiles = pm.getClass()

.getMethod("deleteApplicationCacheFiles", String.class, IPackageDataObserver.class);

deleteApplicationCacheFiles.invoke(pm, pkgName, observer);

}

}catch (Exception e){

e.printStackTrace();

}

}

总结:

网上看过部分帖子和体验了部分清理助手app,特别是针对存储垃圾方面,有很多判断细化标准,使用常规的清理手段的确无法达到满意的程度,因此,你需要使用更多的判断标准去定义“存储垃圾”,然后,再去清理

android垃圾清理动画,Android 6.0系统 内存和缓存清理及相关动画相关推荐

  1. android 垃圾清理 文件清理

    欢迎转载,转载请注明:http://blog.csdn.net/zhgxhuaa 说明 在总篇中提到过垃圾清理,本篇将着重介绍针对缓存.卸载残留.无用数据等"静态内容"的清理,有关 ...

  2. Android进程守护,让APP在系统内存中常驻(二)

    昨天晚上写了用系统服务等方法来实现应用保活.今天写一下用提高app的进程等级来实现应用保活.想看直接调用系统方法保活应用的可以点击Android进程守护,让APP在系统内存中常驻(一)进行跳转. 一: ...

  3. android垃圾清理动画,[Android开发实战]金山清理大师(猎豹清理大师)一键加速快捷方式动画实现...

    转载请注明出处:http://blog.csdn.net/ruils/article/details/16922557 最近有人问我金山清理大师桌面上的一键加速的动画是如何实现的,我下了个金山清理大师 ...

  4. android 动画后动画效果,Android5.0之后 VectorDrawable实现超炫酷动画效果

    标签介绍: , , , 项目中还是用到了一些动画的标签,这里就不做展示了 path android:name 定义该 path 的名字,这样在其他地方可以通过名字来引用这个路径 android:pat ...

  5. Android通知栏微技巧,8.0系统中通知栏的适配

    转载请注明出处:https://blog.csdn.net/guolin_blog/article/details/79854070 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 ...

  6. android ota不打包_android 6.0系统 make otapackage 错误

    android 6.0 系统:在make otapackage时,出现如下错误: unable to load device-specific module; assuming none using ...

  7. android设置静态i,关于Android4.0系统下如何设置wlan静态ip的设置(转)

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 估计有不少人都以为Android4.0系统下如何设置wlan静态ip地址吧,其实不是Android4.0的问题,只是设置上有点区别而已,下面重新教大家如何 ...

  8. 华为android版本9什么意思,基于Android P的华为EMUI 9.0系统正式发布

    9月1日晚间,华为在德国柏林国际电子消费展览会(IFA)上举行媒体沟通会,正式发布华为EMUI 9.0系统. 全新的EMUI 9.0系统基于Android P打造,官方介绍该系统流畅度提升12.9%, ...

  9. Android如何实现地图定位?Android studio+百度地图API+Android6.0系统实现地图显示、地址设置、点击地图定位功能(详细)

    文章说明:本文初衷是为了记录毕设学习过程,避免忘记操作流程.该功能是毕业设计的Android软件端的功能之一,本文将从获取百度地图密钥(AK)开始,详细地对地图定位配置和相关代码进行说明,文末将附上实 ...

最新文章

  1. 有一个能够统一的方式来画uml图的软件
  2. 第5步 配置pom.xml文件 pom文件好了就是jar包引入好了
  3. NuGet是什么?理解与使用(下)
  4. 学习spring必须java基础知识-动态代理
  5. c语言中数据类型的课件,C语言数据类型课件.ppt
  6. 转载一篇写的简单易懂的lvs用法
  7. 认识文本和文本文件 字符流操作的是文本文件
  8. Atitit. 提升存储过程与编程语言的可读性解决方案v3 qc25.docx
  9. 使用Bartend提取K3领料数据以实现发料包装标识批量自动打印
  10. Thinkpad X1 Tablet gen2键盘改typec键线分离
  11. Windows server 下关闭135/139/445端口
  12. matlabrobert锐化_Matlab图像处理系列3———空间域锐化滤波器
  13. Java基础项目 开发团队分配管理系统
  14. Drawable转Bitmap,Bitmap#getPixel像素为0的解决办法
  15. Illustrator国画效果
  16. 免备案二级域名 长久稳定+已备案
  17. 智能视频云监控平台主要功能分析
  18. 为什么 A 能 ping 通 B,B 却不能 ping 通 A ?
  19. 合并BIN文件的两种方法
  20. GD32学习2——流水灯

热门文章

  1. 养成良好的写代码习惯
  2. 高数知识梳理——反常积分的敛散性
  3. 抖音简单3个设置,让播放量轻松破万
  4. 香港计算机硕士面试,香港大学计算机专业面试指南
  5. 定理在数学中的简写形式_数学中的s代表着什么? s符号在数学中表示什么
  6. 20190924——功能类:弹出窗口,让用户输入值
  7. Python BMI体质计算
  8. 微信公众号,点击事件
  9. java if 定义变量赋值_Java中简单的操作(if语句、常用操作符、switch语句、变量赋值等)...
  10. Java if、switch语句,break,case,类型转换、常量、赋值比较、标识符(2)