这是一种不需要的方法IPackageDataObserver.aidl
:
PackageManager pm = getPackageManager();
// Get all methods on the PackageManager
Method[] methods = pm.getClass().getDeclaredMethods();
for (Method m : methods) {
if (m.getName().equals("freeStorage")) {
// Found the method I want to use
try {
long desiredFreeStorage = 8 * 1024 * 1024 * 1024; // Request for 8GB of free space
m.invoke(pm, desiredFreeStorage , null);
} catch (Exception e) {
// Method invocation failed. Could be a permission problem
}
break;
}
}
您需要在清单中包含此内容:
<uses-permission android:name="android.permission.CLEAR_APP_CACHE"/>
这要求 Android 清除足够多的缓存文件,以便有 8GB 可用空间。如果您将此数字设置得足够高,您应该可以达到您想要的效果(Android 将删除缓存中的所有文件)。
其工作方式是,Android 保留所有应用程序缓存目录中所有文件的 LRU(最近最少使用)列表。当您调用freeStorage()
它时,检查是否有存储量(在本例中为 8GB)可用于缓存文件。如果没有,它首先删除最旧的文件,开始从应用程序的缓存目录中删除文件。它会继续删除文件,直到不再有任何文件要删除,或者它已释放您请求的存储量(在本例中为 8GB)。