切记一定要记得拷贝aidl包名
//界面可见的办法
@Override
public voidonStart() {
super.onStart();
//开一个字线程重写,run方法
newThread(){
publicvoid run() {
//遍历所有应用的包名
List<PackageInfo>packageInfos = pm.getInstalledPackages(0);
for(PackageInfo packageInfo : packageInfos) {
finalString packname = packageInfo.packageName;
//根据包名利用反射获取缓存信息(这个轮子方法可以抽取哟!)
Method[] methods = PackageManager.class.getDeclaredMethods();
for(Method method : methods) {
//如果刚好有“getpackagesize”这一方法
if("getPackageSizeInfo".equals(method.getName())) {
//就要对方法进行invoke激活
try{
method.invoke(pm,packname, new IPackageStatsObserver.Stub() {
@Override
publicvoid onGetStatsCompleted(PackageStats pStats, boolean succeeded)
throwsRemoteException {
longcacheSize = pStats.cacheSize;
System.out.println(packname+"缓存的大小为"+cacheSize);
}
});
}catch (Exception e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
};
}.start();
}