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

如何获取手机的缓存

时间:2016-08-04 13:34:12      阅读:448      评论:0      收藏:0      [点我收藏+]

标签:

   1、  手机中的缓存一般放在手机中data/data/的项目/cache当中,cache文件是可不读不可写,所以不能直接获取
 
   2、可以在源码中找到  mPm.getPackageSizeInfo(包名, mStatsObserver);
 
 3、getPackageSizeInfo的方法已经被隐藏了,只能采用反射来获取:需要导入这两个aidl文件

IPackageStatsObserver.aidl 和 PackageStats.aidl

    
     
          
    1?? 获取到packagemanager管理器对象,
     
      public static void getCacheSize(final Activity context, String packName,final                        OnGetCacheSizeListener listener) {
 
      PackageManager pm = context.getPackageManager();
 
    2?? 使用反射
     
      // 1. class
          Class<? extends PackageManager> clazz = pm.getClass();
     // 2. method
          Method method = clazz.getDeclaredMethod("getPackageSizeInfo",
new Class[] {String.class,IPackageStatsObserver.class});
 
      // 3. obj  pm 
          已经获取到了任务管理器
 
//为了获取到回调,定义了一个接口
      IPackageStatsObserver.Stub mStub = new IPackageStatsObserver.Stub() {
 
     @Override
     public void onGetStatsCompleted(PackageStats pStats, boolean succeeded)
     throws RemoteException {
     //回调结果
     final long cacheSize = pStats.cacheSize;
 
                //因为修改了UI界面,所以不能在子线程中运行,创建一个UI线程使其在主线程中修改
     context.runOnUiThread(new Runnable() {
     @Override
     public void run() {
     // TODO Auto-generated method stub
     listener.getCacheSize(cacheSize);//把结果回调给用户
          }
});
 
      // 4. invoke
 
method.invoke(pm, new Object[]{packName,mStub});
 
     3?? 定义一个接口
 
      public class GetAppCacheMessageUtils {
public interface OnGetCacheSizeListener{
void getCacheSize(long cacheSize);
}     

如何获取手机的缓存

标签:

原文地址:http://www.cnblogs.com/amy365/p/5736232.html

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