我们都知道在Android的设置->应用程序中可以查看应用程序的相关信息,其中有一个功能是清除缓存。如图:

怎么实现这些功能呢,从Android的setting源码中可以得到相关信息。

实现如下:

Java代码:

package com.wang.clearcache;

import java.lang.reflect.Method;

import android.os.Bundle;

import android.os.RemoteException;

import android.app.Activity;

import android.content.pm.IPackageStatsObserver;

import android.content.pm.PackageManager;

import android.content.pm.PackageStats;

public class MainActivity extends Activity {

private PackageManager pm;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

pm = getPackageManager();

//反射

try {

Method method = PackageManager.class.getMethod("getPackageSizeInfo", new Class[]{String.class,IPackageStatsObserver.class});

method.invoke(pm, new Object[]{"com.wang.clearcache",new IPackageStatsObserver.Stub() {

@Override

public void onGetStatsCompleted(PackageStats pStats, boolean succeeded)

throws RemoteException

{

long cachesize = pStats.cacheSize;

long codesize = pStats.codeSize;

long datasize = pStats.dataSize;

System.out.println("cachesize:"+ cachesize);

System.out.println("codesize:"+ codesize);

System.out.println("datasize"+ datasize);

}

}});

} catch (Exception e) {

e.printStackTrace();

}

}

}

因为得到缓存信息需要加入android.permission.GET_PACKAGE_SIZE的权限 Androidmainifest.xml

package="com.wang.clearcache"

android:versionCode="1"

android:versionName="1.0" >

android:minSdkVersion="8"

android:targetSdkVersion="17" />

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

android:name="com.wang.clearcache.MainActivity"

android:label="@string/app_name" >

因为使用在代码中使用了PackageManager的getPackageSizeInfo这个函数,但是这个方法是不对外公开的函数,所有我们需要使用发射来调用这个函数,在该方法的内部回调了onGetStatsCompleted(PackageStats pStats, boolean succeeded)这个方法,通过该方法的pStats参数可以得到应用的缓存,数据缓存,代码容量缓存,在使用的过程中需要用到系统的aidl文件

IPackageStatsObserver:

/*

**

** Copyright 2007, The Android Open Source Project

**

** Licensed under the Apache License, Version 2.0 (the "License");

** you may not use this file except in compliance with the License.

** You may obtain a copy of the License at

**

** http://www.apache.org/licenses/LICENSE-2.0

**

** Unless required by applicable law or agreed to in writing, software

** distributed under the License is distributed on an "AS IS" BASIS,

** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

** See the License for the specific language governing permissions and

** limitations under the License.

*/

package android.content.pm;

import android.content.pm.PackageStats;

/**

* API for package data change related callbacks from the Package Manager.

* Some usage scenarios include deletion of cache directory, generate

* statistics related to code, data, cache usage(TODO)

* {@hide}

*/

oneway interface IPackageStatsObserver {

void onGetStatsCompleted(in PackageStats pStats, boolean succeeded);

}

PackageStats:

/* //device/java/android/android/view/WindowManager.aidl

**

** Copyright 2007, The Android Open Source Project

**

** Licensed under the Apache License, Version 2.0 (the "License");

** you may not use this file except in compliance with the License.

** You may obtain a copy of the License at

**

** http://www.apache.org/licenses/LICENSE-2.0

**

** Unless required by applicable law or agreed to in writing, software

** distributed under the License is distributed on an "AS IS" BASIS,

** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

** See the License for the specific language governing permissions and

** limitations under the License.

*/

package android.content.pm;

parcelable PackageStats;

最后运行的结果:

源码地址下载:

android清理缓存功能吗,Android清理缓存功能实现相关推荐

  1. android清理缓存功能吗,android实现清理缓存功能

    android之清理缓存实现,供大家参考,具体内容如下 一. 清理缓存首先要搞清楚清理哪些东西 1.app本身的功能比如录像,录音,更新都会产生文件,需要清理 2.app的默认缓存地址cache 二. ...

  2. android 自动清理缓存图片吗,Android中Glide获取缓存大小并清除缓存图片

    清除Glide缓存 Glide自带清除缓存的功能,分别对应Glide.get(context).clearDiskCache();(清除磁盘缓存)与Glide.get(context).clearMe ...

  3. android分享图片功能实现原理,Android:简单实现并理解图片三级缓存

    学习Android网络开发的过程中,势必会经历很多痛苦的过程,其中一个大坑就是图片缓存,当然现在有很多现成的库非常方便,常常几行代码就可以实现想要的功能,但不懂其中的原理是不行的,所以对于刚开始学习网 ...

  4. 安卓手机管理软件_留言帮忙找:手机清理软件合集 Android

    几款小巧的手机清理软件[滑稽][玫瑰] 本次带来5个小巧实用的手机清理软件 你是否还在为清理垃圾而烦恼?经常为手机清理垃圾可以延长手机的使用时间哦! ①清理大师②power clear③强力清理④全能 ...

  5. android 打开手机存储空间不足,手机存储空间不足?清清缓存吧(Android手机)

    尽管听起来可能有点麻烦,但出于以下几个原因,清理缓存好处多多. 手机会在缓存中存储与已安装的应用程序相关的数据(例如图像),因此您无需等待很长时间即可打开应用程序. 也就是说,如果应用开始有点异常,清 ...

  6. android 系统数据清理工具下载,Coolmuster Android Cleaner(数据清理软件)

    CoolmusterAndroidCleaner是一款针对安卓系统专业打造的清理软件,可以帮户用户清理应用程序缓存.应用程序cookie.应用程序临时文件.应用程序崩溃日志.下载的临时文件以及照片缓存 ...

  7. microsoftfixitoffice官方清理软件_留言帮忙找:手机清理软件合集 Android

    几款小巧的手机清理软件[滑稽][玫瑰] 本次带来5个小巧实用的手机清理软件 你是否还在为清理垃圾而烦恼?经常为手机清理垃圾可以延长手机的使用时间哦! ①清理大师②power clear③强力清理④全能 ...

  8. 苹果微信浏览器html缓存图片吗,h5清理微信浏览器网页缓存

    前言: 缓存这个问题的出现,真真切切的感受到微信浏览器这鬼东西对前端程序员充满了恶意,捋捋自己的发型,甚是恐慌(顿时有种想转php的冲动,有木有). 解决方案: 出现缓存问题导致用户出现很多车祸现场( ...

  9. android图片释放内存吗,Android手机真的需要经常清理内存吗

    Android手机需要清内存吗?需要吗?需要吗?需要吗?结论是再明显不过:不需要!其实这个结论也适用iPhone手机,iOS在内存管理方面更为激进. 很长一段时间以来,人们通过以下的办法清理手机内存 ...

最新文章

  1. Win10 15063 开始运行不保存历史记录原因和解决方法
  2. 一个“蝇量级” C 语言协程库
  3. Apache的压力测试以及web性能优化的常用知识总结
  4. instance-based与model-based 区别
  5. oracle变量绑定代码,Oracle 绑定变量
  6. 词典对象 NSDictionary与NSMutableDictionary
  7. Tensorflow object detection API 搭建自己的目标检测模型并迁移到Android上
  8. CentOS7 安装git服务器
  9. 揭秘315黑客wifi,如何保障APP数据安全
  10. Keras版的GCN代码学习
  11. 西威变频器使用说明书_西威变频器说明书西威变频器说明书图文.doc
  12. Google帝国研究——Google的产业构成
  13. 原生js实现音乐播放器功能,可以实时显示歌词并且高亮当前句
  14. HTML背景图片的设置
  15. 解决HP ProLiant DL380 G5的安装与启动CentOS7时不能识别raid硬盘问题
  16. win10找不到网络里的计算机,Win10专业版找不到网络中的其他电脑
  17. 软件测试行业到底有没有前景和出路?(最全面)
  18. 收藏:更换手机号必做的9件事
  19. 基于java的幼儿园早教网站
  20. 一个合格的java工程师应该必备的能力

热门文章

  1. 如何高效快速地在Linux系统上部署Node.js+Express+MySQL的开发环境(桌面可视化)...
  2. 【Node】新手入门 基于Express,Sequelize、IIS的MVC项目
  3. MS-Sqlserver2008建立维护计划执行备份任务
  4. redis实例python_使用python操作redis(管道)
  5. qt程序部署在linux,Qt应用打包发布,部署真正的Qt程序LinuxWindows-Go语言中文社区...
  6. 查看tensor的形状,行列大小
  7. 计算机技术应用于教学案例,中职计算机教学中案例教学方法的运用
  8. SegNet网络结构
  9. 哪吒之魔童降世视听语言影评_豆瓣评分8.7,这个“新哪吒”不一般|《哪吒之魔童降世》影评...
  10. 算法训练 字符串编辑(java)