为什么微信缓存清不了已清,不能解决,有没有大神告知

如何实现手机缓存清理的功能
android手机上的杀毒软件或者是手机管家等类似应用都会有垃圾清理的功能, 那么清理的缓存文件是什么? 怎么去找出应用的缓存文件并将他们清理, 在这里我将介绍如何实现手机垃圾文件清理的功能。
缓存文件是什么,缓存文件的目录在那里?
我们知道方法:
getFilesDir() 的路径是 /data/data/包名/files/
getCacheDir()的路径是 /data/data/包名/cache/
缓存文件路径就是getCacheDir()的路径,在此路径下的文件为缓存文件,当系统内存不够,系统会去释放这个路径下的文件。
先看一下缓存清理demo的结果:
2 界面编写
(1)主界面包括一个title, 一个进度条,一个线性布局保存扫描结果(也可以是listview这里为了简便), 一个清理按钮
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#999999"
android:orientation="vertical"
tools:context=".MainActivity" &
android:layout_width="match_parent"
android:layout_height="40dp"
android:gravity="center"
android:text="缓存清理"
android:textColor="#ffffff"
android:textSize="22sp" /&
android:layout_width="match_parent"
android:layout_height="wrap_content" &
android:id="@+id/pb"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content" /&
android:id="@+id/scan_state"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="扫描状态"
android:textColor="#ffffff" /&
android:layout_weight="1000"
android:id="@+id/ll_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="5dp"
android:orientation="vertical" &
android:id="@+id/clear_caches"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
android:text="一键清除"/&
(2)扫描到的缓存item布局文件:
包含两个textview展示应用名称与缓存大小,一个view作为分割线
&?xml version="1.0" encoding="utf-8"?&
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" &
android:id="@+id/app_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:textSize="20sp" /&
android:id="@+id/cache_size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/app_name"
android:textColor="#ffffff"
android:textSize="16sp" /&
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_below="@id/cache_size"
android:background="#" /&
3 功能逻辑实现代码
public class MainActivity extends Activity implements OnClickListener{
private ProgressB
private TextView scan_
private LinearLayout ll_
private PackageM
private Button cleanC
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pb = (ProgressBar) findViewById(R.id.pb);
scan_state = (TextView) findViewById(R.id.scan_state);
ll_container = (LinearLayout) findViewById(R.id.ll_container);
cleanCaches = (Button) findViewById(R.id.clear_caches);
cleanCaches.setOnClickListener(this);
scanCaches();
private void scanCaches() {
pm = getPackageManager();
new Thread(){
public void run() {
Method getPackageSizeInfoMethod = null;
Method[] methods = PackageManager.class.getMethods();
for (Method method : methods) {
if("getPackageSizeInfo".equals(method.getName())) {
getPackageSizeInfoMethod =
List&PackageInfo& packageInfos = pm.getInstalledPackages(0);
pb.setMax(packageInfos.size());
int progress = 0;
for (PackageInfo info : packageInfos) {
getPackageSizeInfoMethod.invoke(pm, info.packageName,
new MyDataObserver());
Thread.sleep(100);
} catch (Exception e) {
e.printStackTrace();
progress++;
pb.setProgress(progress);
runOnUiThread(new Runnable() {
public void run() {
scan_state.setText("扫描完毕...");
cleanCaches.setVisibility(View.VISIBLE);
}.start();
private class MyDataObserver extends IPackageStatsObserver.Stub {
public void onGetStatsCompleted(PackageStats pStats, boolean succeeded)
throws RemoteException {
final long cache = pStats.cacheS
final String packname = pStats.packageN
final ApplicationInfo appI
appInfo = pm.getApplicationInfo(packname, 0);
runOnUiThread(new Runnable() {
public void run() {
scan_state.setText("正在扫描:" + appInfo.loadLabel(pm));
if (cache & 0) {
View view = View.inflate(getApplicationContext(), R.layout.cache_info_layout, null);
TextView tv_cache = (TextView) view.findViewById(R.id.cache_size);
tv_cache.setText("缓存大小:" + Formatter.formatFileSize(getApplicationContext(), cache));
TextView tv_name = (TextView) view.findViewById(R.id.app_name);
tv_name.setText(appInfo.loadLabel(pm));
ll_container.addView(view, 0);
} catch (Exception e) {
e.printStackTrace();
private class MyPackDataObserver extends IPackageDataObserver.Stub {
public void onRemoveCompleted(String packageName, boolean succeeded)
throws RemoteException {
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(getApplicationContext(), "缓存删除成功", Toast.LENGTH_SHORT).show();
ll_container.removeAllViews();
scan_state.setText("缓存清理成功");
public void onClick(View v) {
switch (v.getId()) {
case R.id.clear_caches:
CleanAllCache();
private void CleanAllCache() {
Method[] methods = PackageManager.class.getMethods();
for (Method method : methods) {
if("freeStorageAndNotify".equals(method.getName())) {
method.invoke(pm, Integer.MAX_VALUE, new MyPackDataObserver());
} catch (InvocationTargetException e) {
e.getCause().printStackTrace();
} catch (Exception e) {
e.printStackTrace();
代码中的注释已经很详细,但是这里需要说明一下,关于freeStorageAndNotify等方法的获得是使用反射机制,因为这些方法在PackageManager中是隐藏的,我们通过获取所有的method然后通过名字匹配,获得方法再通过invoke方法去使用获得的方法。具体关于获得所有应用的缓存与清理缓存的步骤方法可以参考android系统源码中的setting模块。
当你copy上面代码到你的工程中,肯定会报错,因为IPackageStatsObserver.Stub和IPackageDataObserver.Stub找不到,因为这两个类是aidl,因为读取与清理缓存需要读取其他应用程序,需要进程间数据通信。
你需要下载IPackageDataObserver.aidl, IPackageStatsObserver.aidl和PackageStats.aidl这三个文件(可以下载demo的源码,源码中包含这三个文件),在你的工程中创建一个名为android.content.pm的package,将这三个文件copy到这个包下,如图:
然后它会自动在gen目录下生成对应的java文件:
这个时候上面的代码就不会出现错误了,关于aidl这里不去介绍,不懂大家可以google一下。
注意: 应用程序需要下面两个权限:
android:name="android.permission.GET_PACKAGE_SIZE"/&
android:name="android.permission.CLEAR_APP_CACHE"/&
将其加到清单文件AndroidManifest.xml中。
4 关于缓存清理的功能原理
缓存清理利用了android的一个bug, 调用freeStorageAndNotify的方法,向系统请求说需要一块很大的内存这里传入的值是Integer.MAX_VALUE, 系统内存不够会去自动去将应用的缓存清理来满足内存的请求, 这样就实现了缓存清理的功能。
至此实现了手机缓存清理的功能,如有任何疑问可以留言。
源码下载地址:
没有更多推荐了,您需要通过验证再能继续浏览 3秒后开始验证
丨 粤ICP备号-10 丨 新三板上市公司威锋科技(836555)
增值电信业务经营许可证:
Powered by Discuz!
(C) Joyslink Inc. All rights reserved 保留所有权利网页图片无法加载,已清除缓存,已修复但还是不行_百度知道
网页图片无法加载,已清除缓存,已修复但还是不行
网页图片无法加载,已清除缓存,已修复但还是不行
我有更好的答案
解决办法:建议先用【百度电脑专家】的“网页图片不显示”修复下,修复链接:;建议查看下本机的hosts是否正常。方法:用记事本打开c:\windows\system32\drivers\etc\hosts文件,看看里面是什么内容,可以全部清空点击保存;建议查看dns是否有改动迹象。可尝试把ip和dns改为自动获取或打开运行窗口输入(WIN+R),输入cmd,在弹出窗口中输入如图所示命令:ipconfig /flushdns或打开服务(运行窗口输入services.msc)重启DHCP服务;网速不稳定导致的。可以下载网速测试的小工具来查看一下是哪个软件占用了大量的网速把它限制或者结束;实在不行建议换个浏览器试试。若问题依旧,可以在【百度电脑专家】提交您的问题。以下是【百度电脑专家】的下载链接,希望可以帮到您~
采纳率:63%
  尊敬的用户,您好!很高兴为您答疑。  排除缓存因素之外,还有可能是您的浏览器安装了图片拦截类的扩展,导致所有的图片被拦截,进而导致没能显示。您可以尝试使用安全模式(firefox -safe -mode)或新建配置文件(firefox -p -no -remote),在排除扩展的干扰下进行问题的定位。  希望我的回答对您有所帮助,如有疑问,欢迎继续咨询我们。
本回答被网友采纳
浏览器卸载后重新安装吧!
应该是你吧网页图片加载功能关掉了
其他1条回答
为您推荐:
其他类似问题
网页图片的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。经验446 米
在线时间215 小时
版本4.11.7
积分 626, 距离下一级还需 1374 积分
积分 626, 距离下一级还需 1374 积分
机型未知设备
签到次数14
MIUI版本4.11.7
想卡刷ROM ,但是清除缓存不了,一清楚就卡在98%动不了,还有个问题就是卡刷前需要清楚数据吗,就是wipe。本人三星转战MI3W,刷机的各种事宜还不懂。求大神告知。
分享到微信朋友圈
打开微信,点击底部的“发现”,使用 “扫一扫” 即可将网页分享到我的朋友圈。
经验6792 米
在线时间283 小时
版本8.7.18
机型未知设备
签到次数171
MIUI版本8.7.18
通过手机发布
等会就好了
经验446 米
在线时间215 小时
版本4.11.7
积分 626, 距离下一级还需 1374 积分
积分 626, 距离下一级还需 1374 积分
机型未知设备
签到次数14
MIUI版本4.11.7
等会就好了
等了好久了 ,还是不动,我就强制重启了,不知道为什么
经验4185 米
威望-11 米
在线时间354 小时
积分 5619, 距离下一级还需 14381 积分
积分 5619, 距离下一级还需 14381 积分
机型未知设备
签到次数62
MIUI版本6.3.3
通过手机发布
手動刪除相關文件夾,重啟就好了
经验2554 米
在线时间154 小时
版本8.4.19
飘向远方的叶子
积分 3034, 距离下一级还需 1966 积分
积分 3034, 距离下一级还需 1966 积分
机型小米手机6
签到次数70
MIUI版本8.4.19
要10分钟左右才行
点赞金米兔勋章
参加小米上市回帖活动
MIUI 10专属勋章
参加回帖活动
2018新年勋章
参与回帖活动
MIUI真实车主勋章
参与回帖活动
MIUI七周年
MIUI 9纪念勋章
新版论坛APP
更新新版APP
APP 1000万
MIUI论坛APP注册用户突破1000万纪念勋章
MIUI 300周
MIUI 300周更新纪念勋章
关注腾讯微博
已关注腾讯微博
已关注极客秀微信
已关注微信
关注新浪微博
已关注新浪微博
Copyright (C) 2017 MIUI
京ICP备号 | 京公网安备34号 | 京ICP证110507号九星天辰诀包裹已清理,但一直提示包裹已满,换电脑,清缓存都不行_百度知道
九星天辰诀包裹已清理,但一直提示包裹已满,换电脑,清缓存都不行
九星天辰诀包裹已清理,但一直提示包裹已满,换电脑,清缓存都不行,有没有大神知道怎么解决,跪求解答!!!
这个框无法关闭
我有更好的答案
你看看背包、宠物背包、家具、衣柜... ... 都算的,你需要把所有背包都整理一下,就可以了
采纳率:70%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 淘宝清缓存 的文章

 

随机推荐