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

前言

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

功能说明

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

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

UI实现

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

948661b6a23d

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,特别是针对存储垃圾方面,有很多判断细化标准,使用常规的清理手段的确无法达到满意的程度,因此,你需要使用更多的判断标准去定义“存储垃圾”,然后,再去清理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值