清理手机缓存

           手机缓存清理


需要三个aidl文件:


http://download.youkuaiyun.com/detail/chengtaoyan/9171235

代码:(Activity)


private Method getPackageSizeInfo;

public void getAppCache() throws InterruptedException {
	final PackageManager pm = getActivity().getPackageManager();
	try {
		getPackageSizeInfo = PackageManager.class.getDeclaredMethod(
					"getPackageSizeInfo", String.class,
					IPackageStatsObserver.class);
		getPackageSizeInfo.setAccessible(true);
	} catch (NoSuchMethodException e) {
		e.printStackTrace();
	}
	List<PackageInfo> packageInfos = pm
			.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);
	final List<RunningProcess> itemList = new ArrayList<RunningProcess>();
	final CountDownLatch countDownLatch = new CountDownLatch(
			packageInfos.size());
	try {
		for (PackageInfo info : packageInfos) {
			final PackageInfo packageInfo = info;
			getPackageSizeInfo.invoke(pm, info.packageName,
					new IPackageStatsObserver.Stub() {
				@Override
				public void onGetStatsCompleted(
					PackageStats pStats, boolean succeeded)
								throws RemoteException {
					if (succeeded && pStats != null) {
						RunningProcess item = new RunningProcess();
									
						item.setMemorySize(pStats.cacheSize);
						item.setAppName(packageInfo.applicationInfo
							.loadLabel(pm).toString());
						item.setIcon(packageInfo.applicationInfo.loadIcon(pm));
						itemList.add(item);
					}
					synchronized (countDownLatch) {
					countDownLatch.countDown();
					}
				}
				});
		}
	} catch (IllegalAccessException e) {
		e.printStackTrace();
	} catch (InvocationTargetException e) {
		e.printStackTrace();
	}

	countDownLatch.await();
	//将数据显示在列表上
	list.addAll(itemList);
	adapter.notifyDataSetChanged();
}


/**
	 * 一键清理
	 */
private Method freeStorageAndNotify;

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
public void doClean() {
	try {

		freeStorageAndNotify = PackageManager.class.getDeclaredMethod(
					"freeStorageAndNotify", Long.TYPE,
					IPackageDataObserver.class);
	} catch (NoSuchMethodException e) {
		e.printStackTrace();
	}

	PackageManager pm = getActivity().getPackageManager();
	File loadData = Environment.getDataDirectory();
	if (loadData == null) {
		return;
	}

	StatFs statFs = new StatFs(loadData.getAbsolutePath());
	// long size = statFs.getBlockCount()*statFs.getBlockSize();
	long size = statFs.getBlockCountLong() * statFs.getBlockSizeLong();
	try {
		freeStorageAndNotify.invoke(pm, size,
			new IPackageDataObserver.Stub() {
				@Override
				public void onRemoveCompleted(String packageName,
						boolean succeeded) throws RemoteException {

						Toast.makeText(getActivity(), "清理成功", Toast.LENGTH_LONG).show();
					}
				});
	} catch (IllegalAccessException e) {
		e.printStackTrace();
	} catch (InvocationTargetException e) {
		e.printStackTrace();
	}
}


Ok

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值