安卓开发之清理手机应用程序缓存

清理手机应用程序缓存。
   拿到模块后,先实现UI界面。界面实现后开始思考整个模块要实现的功能,然后是要使用的API。
   第一步:先拿到包管理器
    PackageManager pm=getPackageManager();
   第二步:利用包管理器拿到所有安装在手机上的apk包信息的集合
    pm.getInstalledPackages(0);
   第三步:遍历包信息  查看每个包信息的缓存信息。
   第四步:查询源码后我们知道了通过包管理的getPackageSizeInfo方法可以得到应用程序的缓存大小。
   getPackageSizeInfo(String packageName, IPackageStatsObserver observer)
   第五步:由于这个方法加了这样一个注解“@hide”,所以被隐藏了,所以我们要用反射来使用这个方法。
    Method method=null;
    Method[] methods = PackageManager.class.getMethods();
    for(Method m:methods){
if("getPackageSizeInfo".equals(m.getName())){
method=m;
}
}
   第六步:得到这个方法后,我们知道使用这个方法需要一个服务的接口对象,所以我们应该得到这个对象,
    我们查找源文件得到aidl文件复制到工程里,然后创建接口对象。
    IPackageStatsObserver.aidl    IPackageDataObserver.aidl
    使用远程服务需要aidl文件,找到aidl文件后建好相应的包名后,就可以开始使用这个方法了。
     
    第七步:实现IPackageStatsObserver接口的实现类。
   
    通过源码我们已经知道通过PackageStats可以得到应用程序的大小,缓存大小,代码的大小。
  class myDataObserver extends IPackageStatsObserver.Stub{

@Override
public void onGetStatsCompleted(PackageStats pStats, boolean succeeded)
throws RemoteException {

}

}
第八步:开始实现逻辑,更新UI。
第九步:需要权限。GET_PACKAGE_SIZE


第十步:一键清理全部缓存

利用反射得到清理缓存的方法freeStorageAndNotify(long freeStorageSize, IPackageDataObserver observer)
需要权限:android.permission.CLEAR_APP_CACHE.





PackageManager pm = getPackageManager();
List<PackageInfo> installedPackages = pm.getInstalledPackages(0);
Method[] methods = PackageManager.class.getMethods();
Method method = null;
for(Method m:methods){
if("getPackageSizeInfo".equals(m.getName())){
method=m;
}
}
for(PackageInfo packageinfo:installedPackages){
try {
method.invoke(pm,packageinfo.packageName, new myDataObserver());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}



class myDataObserver extends IPackageStatsObserver.Stub{

@Override
public void onGetStatsCompleted(PackageStats pStats, boolean succeeded)
throws RemoteException {

}

}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值