获取应用的缓存信息
来源:互联网 发布:有趣的java小程序 编辑:程序博客网 时间:2024/05/17 04:25
public class CacheInfoProvider { private Handler handler; private PackageManager packageManager;//包管理器 private Vector<CacheInfo> cacheInfos; private int size = 0; public CacheInfoProvider(Handler handler, Context context) { //拿到一个包管理器 packageManager = context.getPackageManager(); this.handler = handler; cacheInfos = new Vector<CacheInfo>(); } public void initCacheInfos() { //获取所有已经安装了的应用的信息,包括哪些安装后卸载的但是没有清除数据的应用; List<PackageInfo> packageInfos = packageManager.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES); size = packageInfos.size(); for (int i = 0; i < size; i++) { PackageInfo packageInfo = packageInfos.get(i); CacheInfo cacheInfo = new CacheInfo(); //拿到包名 String packageName = packageInfo.packageName; cacheInfo.setPackageName(packageName); //拿到应用程序的信息 ApplicationInfo applicationInfo = packageInfo.applicationInfo; //拿到应用程序的程序名 String name = applicationInfo.loadLabel(packageManager).toString(); cacheInfo.setPackageName(name); //拿到应用程序的图标 Drawable icon = applicationInfo.loadIcon(packageManager); cacheInfo.setIcon(icon); initDataSize(cacheInfo, i);//数据大小 } } private void initDataSize(final CacheInfo cacheInfo, final int position) { try { Method method = PackageManager.class.getMethod( "getPackageSizeInfo", new Class[]{String.class, IPackageStatsObserver.class}); method.invoke(packageManager, new Object[]{cacheInfo.getPackageName(), new IPackageStatsObserver.Stub() { @Override public void onGetStatsCompleted( PackageStats pStats, boolean succeeded) throws RemoteException { System.out.println("onGetStatsCompleted" + position); long cacheSize = pStats.cacheSize; long codeSize = pStats.codeSize; long dataSize = pStats.dataSize; cacheInfo.setCacheSize(TextFormater .dataSizeFormat(cacheSize)); cacheInfo.setCodeSize(TextFormater .dataSizeFormat(codeSize)); cacheInfo.setDataSize(TextFormater .dataSizeFormat(dataSize)); cacheInfos.add(cacheInfo); if (position == (size - 1)) { // 当完全获取完信息之后,发送一个成功的消息 // 1对应的就是CacheClearActivity里面的FINISH handler.sendEmptyMessage(1); } } }}); } catch (Exception e) { e.printStackTrace(); } } public Vector<CacheInfo> getCacheInfos() { return cacheInfos; } public void setCacheInfos(Vector<CacheInfo> cacheInfos) { this.cacheInfos = cacheInfos; }}
以上相关信息总结于:https://github.com/joyoyao/superCleanMaster 一键清理 开源版,包括内存加速,缓存清理,自启管理,软件管理等。
0 0
- 获取应用的缓存信息
- 获取应用的常用信息
- 获取应用程序缓存信息
- Android获取应用的缓存路径
- Android应用数据、缓存的清除和获取缓存大小
- Enumeration 在获取页面的信息应用
- 获取ios应用的app相关信息
- android获取最近使用应用的信息
- Android获取应用的签名信息
- android 中获取应用的版本信息
- 关于Android的应用信息获取方法
- 获取web应用的初始化信息
- 通过PackageManager获取应用包的信息
- Android获取应用的签名信息
- 03_获取所有应用的信息
- 信道信息的获取和应用
- 5.0获取当前打开的应用信息
- Android 获取应用Crash信息的方法
- Linux系统下Makefile文件编写
- 微信公众号-人脸识别(python)
- iOS 图片压缩实验
- spring beanFactoryPostProcessor beanPostProcessor
- synchronized同步
- 获取应用的缓存信息
- iOS数据持久化(-)偏好设置
- HttpClient优化指南
- 基于SharePoint 2013的论坛解决方案
- 关于java的序列化及反序列化
- 关于 eclipse启动卡死的问题处理
- 机房重构——透过实践看Datatable和泛型
- PHP---验证码实现
- JQuery和JS操作LocalStorage/SessionStorage的方法