Очистка кэша в андроид

Очистка кэша в андроид

Вот способ сделать это, который не требует 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 было достаточно файлов кеша, чтобы было бесплатно 8 ГБ. Если вы установите это число достаточно высоко, вы должны достичь того, чего хотите (чтобы Android удалил все файлы в кеше).

Как это работает, Android поддерживает список LRU (наименее недавно используемый) всех файлов во всех каталогах кеша приложений. Когда вы вызываете freeStorage(), он проверяет, доступен ли объем хранения (в данном случае 8 ГБ) для файлов кеша. Если нет, он начинает удалять файлы из каталогов кэша приложений, сначала удаляя файлы oldest. Он продолжает удалять файлы до тех пор, пока не будет больше файлов для удаления, или он освободит объем запрашиваемого вами хранилища (в этом случае 8 ГБ).

источник поделиться

Источник: qaru.site


Добавить комментарий