码迷,mamicode.com
首页 > 移动开发 > 详细

查询android中各个应用的缓存

时间:2014-11-05 18:50:53      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:android   style   blog   io   color   sp   div   on   问题   

如何查询android手机中各个应用的缓存,很多手机卫士都有这个功能,但是从官方文档中找不到相应的api,那么问题就来了。。。如何实现这个功能?android开源的好处就是你可以翻系统源码,找到系统中设置的源码,系统设置中的应用详情里面就有缓存大小。从源码中可以看到Setting应用是调用的PackageManager中的getPackageSizeInfo方法,该方法接受两个参数,一个是包名,一个是名为IPackageStatsObserver的aidl对象,那么我们导入IPackageStatsObserver这个aidl到我们的工程下面,发现IPackageStatsObserver还需要一个名为PackageStats的aidl,同样导入。

研究PackageManager发现getPackageSizeInfo方法只能系统调用,如何解决?反射呗,好了问题解决了代码如下:

 1 public class CleanCatchActivity extends Activity {
 2     @Override
 3     protected void onCreate(Bundle savedInstanceState) {
 4         
 5         super.onCreate(savedInstanceState);
 6         setContentView(R.layout.activity_cleancache);
 7         PackageManager pm = getPackageManager();
 8         Class pckclass = PackageManager.class;
 9         try {
10             Method method = pckclass.getMethod("getPackageSizeInfo", String.class,IPackageStatsObserver.class);
11             method.invoke(pm, "cn.chai.mobilesafe",ipso);
12         } catch (Exception e) {
13             e.printStackTrace();
14         }
15         
16         
17     }
18 
19     IPackageStatsObserver.Stub ipso = new IPackageStatsObserver.Stub() {
20         
21         @Override
22         public void onGetStatsCompleted(PackageStats pStats, boolean succeeded)
23                 throws RemoteException {
24             
25             System.out.println(pStats.cacheSize);
26             System.out.println(pStats.dataSize);
27         }
28     };
29     
30     
31 }

从onGetStatsCompleted这个回调方法中的packagestats方法就可以得到该应用的所有缓存信息。

查询android中各个应用的缓存

标签:android   style   blog   io   color   sp   div   on   问题   

原文地址:http://www.cnblogs.com/cimu/p/4076726.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!