清理手机缓存
来源:互联网 发布:理性选民的神话 知乎 编辑:程序博客网 时间:2024/04/30 07:31
手机缓存清理
需要三个aidl文件:
http://download.csdn.net/detail/chengtaoyan/9171235
代码:(Activity)
private Method getPackageSizeInfo;public void getAppCache() throws InterruptedException {final PackageManager pm = getActivity().getPackageManager();try {getPackageSizeInfo = PackageManager.class.getDeclaredMethod("getPackageSizeInfo", String.class,IPackageStatsObserver.class);getPackageSizeInfo.setAccessible(true);} catch (NoSuchMethodException e) {e.printStackTrace();}List<PackageInfo> packageInfos = pm.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);final List<RunningProcess> itemList = new ArrayList<RunningProcess>();final CountDownLatch countDownLatch = new CountDownLatch(packageInfos.size());try {for (PackageInfo info : packageInfos) {final PackageInfo packageInfo = info;getPackageSizeInfo.invoke(pm, info.packageName,new IPackageStatsObserver.Stub() {@Overridepublic void onGetStatsCompleted(PackageStats pStats, boolean succeeded)throws RemoteException {if (succeeded && pStats != null) {RunningProcess item = new RunningProcess();item.setMemorySize(pStats.cacheSize);item.setAppName(packageInfo.applicationInfo.loadLabel(pm).toString());item.setIcon(packageInfo.applicationInfo.loadIcon(pm));itemList.add(item);}synchronized (countDownLatch) {countDownLatch.countDown();}}});}} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}countDownLatch.await();//将数据显示在列表上list.addAll(itemList);adapter.notifyDataSetChanged();}
/** * 一键清理 */private Method freeStorageAndNotify;@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)public void doClean() {try {freeStorageAndNotify = PackageManager.class.getDeclaredMethod("freeStorageAndNotify", Long.TYPE,IPackageDataObserver.class);} catch (NoSuchMethodException e) {e.printStackTrace();}PackageManager pm = getActivity().getPackageManager();File loadData = Environment.getDataDirectory();if (loadData == null) {return;}StatFs statFs = new StatFs(loadData.getAbsolutePath());// long size = statFs.getBlockCount()*statFs.getBlockSize();long size = statFs.getBlockCountLong() * statFs.getBlockSizeLong();try {freeStorageAndNotify.invoke(pm, size,new IPackageDataObserver.Stub() {@Overridepublic void onRemoveCompleted(String packageName,boolean succeeded) throws RemoteException {Toast.makeText(getActivity(), "清理成功", Toast.LENGTH_LONG).show();}});} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}}
Ok
1 0
- 清理手机缓存
- 手机清理缓存文件
- 如何实现手机缓存清理的功能
- 手机微信内置浏览器清理缓存
- 安卓开发之清理手机应用程序缓存
- [安卓]手机管家(二十) 缓存清理
- Android之——清理手机SD卡缓存
- 缓存清理
- 清理缓存
- 缓存清理
- 清理缓存
- 清理缓存
- 清理缓存
- 清理缓存
- 清理缓存
- 清理缓存
- 清理缓存
- 清理缓存
- UVa11175
- 随笔
- 某班有20名学生,从键盘输入这20名学生的成绩存放在数组中,实现由大到小输出。
- 安卓 异步任务 ----AsyncTask
- Eclipse快捷键
- 清理手机缓存
- 求100到200的质数(素数)
- 类内存占用
- 学生选课系统(3)-对数据库操作实现
- TopCoder SRM 670 Div2 Problem 1050 - Treestrat (floyd)
- 雪碧图 CSS sprite 优化性能
- Axure快捷键
- 【软考4】编程语言的发展和特点
- eclipse部署WEB项目时经常遇到的问题