android清理缓存功能吗,Android清理缓存功能实现
我们都知道在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清理缓存功能实现相关推荐
- android清理缓存功能吗,android实现清理缓存功能
android之清理缓存实现,供大家参考,具体内容如下 一. 清理缓存首先要搞清楚清理哪些东西 1.app本身的功能比如录像,录音,更新都会产生文件,需要清理 2.app的默认缓存地址cache 二. ...
- android 自动清理缓存图片吗,Android中Glide获取缓存大小并清除缓存图片
清除Glide缓存 Glide自带清除缓存的功能,分别对应Glide.get(context).clearDiskCache();(清除磁盘缓存)与Glide.get(context).clearMe ...
- android分享图片功能实现原理,Android:简单实现并理解图片三级缓存
学习Android网络开发的过程中,势必会经历很多痛苦的过程,其中一个大坑就是图片缓存,当然现在有很多现成的库非常方便,常常几行代码就可以实现想要的功能,但不懂其中的原理是不行的,所以对于刚开始学习网 ...
- 安卓手机管理软件_留言帮忙找:手机清理软件合集 Android
几款小巧的手机清理软件[滑稽][玫瑰] 本次带来5个小巧实用的手机清理软件 你是否还在为清理垃圾而烦恼?经常为手机清理垃圾可以延长手机的使用时间哦! ①清理大师②power clear③强力清理④全能 ...
- android 打开手机存储空间不足,手机存储空间不足?清清缓存吧(Android手机)
尽管听起来可能有点麻烦,但出于以下几个原因,清理缓存好处多多. 手机会在缓存中存储与已安装的应用程序相关的数据(例如图像),因此您无需等待很长时间即可打开应用程序. 也就是说,如果应用开始有点异常,清 ...
- android 系统数据清理工具下载,Coolmuster Android Cleaner(数据清理软件)
CoolmusterAndroidCleaner是一款针对安卓系统专业打造的清理软件,可以帮户用户清理应用程序缓存.应用程序cookie.应用程序临时文件.应用程序崩溃日志.下载的临时文件以及照片缓存 ...
- microsoftfixitoffice官方清理软件_留言帮忙找:手机清理软件合集 Android
几款小巧的手机清理软件[滑稽][玫瑰] 本次带来5个小巧实用的手机清理软件 你是否还在为清理垃圾而烦恼?经常为手机清理垃圾可以延长手机的使用时间哦! ①清理大师②power clear③强力清理④全能 ...
- 苹果微信浏览器html缓存图片吗,h5清理微信浏览器网页缓存
前言: 缓存这个问题的出现,真真切切的感受到微信浏览器这鬼东西对前端程序员充满了恶意,捋捋自己的发型,甚是恐慌(顿时有种想转php的冲动,有木有). 解决方案: 出现缓存问题导致用户出现很多车祸现场( ...
- android图片释放内存吗,Android手机真的需要经常清理内存吗
Android手机需要清内存吗?需要吗?需要吗?需要吗?结论是再明显不过:不需要!其实这个结论也适用iPhone手机,iOS在内存管理方面更为激进. 很长一段时间以来,人们通过以下的办法清理手机内存 ...
最新文章
- Win10 15063 开始运行不保存历史记录原因和解决方法
- 一个“蝇量级” C 语言协程库
- Apache的压力测试以及web性能优化的常用知识总结
- instance-based与model-based 区别
- oracle变量绑定代码,Oracle 绑定变量
- 词典对象 NSDictionary与NSMutableDictionary
- Tensorflow object detection API 搭建自己的目标检测模型并迁移到Android上
- CentOS7 安装git服务器
- 揭秘315黑客wifi,如何保障APP数据安全
- Keras版的GCN代码学习
- 西威变频器使用说明书_西威变频器说明书西威变频器说明书图文.doc
- Google帝国研究——Google的产业构成
- 原生js实现音乐播放器功能,可以实时显示歌词并且高亮当前句
- HTML背景图片的设置
- 解决HP ProLiant DL380 G5的安装与启动CentOS7时不能识别raid硬盘问题
- win10找不到网络里的计算机,Win10专业版找不到网络中的其他电脑
- 软件测试行业到底有没有前景和出路?(最全面)
- 收藏:更换手机号必做的9件事
- 基于java的幼儿园早教网站
- 一个合格的java工程师应该必备的能力
热门文章
- 如何高效快速地在Linux系统上部署Node.js+Express+MySQL的开发环境(桌面可视化)...
- 【Node】新手入门 基于Express,Sequelize、IIS的MVC项目
- MS-Sqlserver2008建立维护计划执行备份任务
- redis实例python_使用python操作redis(管道)
- qt程序部署在linux,Qt应用打包发布,部署真正的Qt程序LinuxWindows-Go语言中文社区...
- 查看tensor的形状,行列大小
- 计算机技术应用于教学案例,中职计算机教学中案例教学方法的运用
- SegNet网络结构
- 哪吒之魔童降世视听语言影评_豆瓣评分8.7,这个“新哪吒”不一般|《哪吒之魔童降世》影评...
- 算法训练 字符串编辑(java)