Очистить кеш приложений при выходе в Android
Я хочу, чтобы очистить кэш-память приложения при выходе из приложения.
эту задачу я могу сделать вручную с помощью этих шагов.
Управление приложениями -> «Мое приложение» -> Очистить кеш >>
- Каков наилучший метод для принудительного истечения кеша в ASP.NET?
- Как отключить кеш запросов Django?
- Когда Asp.Net удаляет устаревшие элементы кэша?
- Что такое кеширование?
- NodeJS / express: код состояния кэша и 304
но я хочу сделать эту задачу, программируя при выходе из приложения .. пожалуйста, помогите мне, ребята ..
Заранее спасибо..
- Оценка размера кеша в вашей системе?
- Наблюдение за устаревшей инструкцией по x86 с самомодифицируемым кодом
- MemoryCache не соответствует ограничениям памяти в конфигурации
- RAM-накопитель для компиляции - есть ли такая вещь?
- Как написать код, который лучше всего использует кеш процессора для повышения производительности?
- Как очистить кэш HttpWebRequest
- Chrome не кэширует изображения / js / css
- Есть ли API, чтобы заставить Facebook снова очистить страницу?
Попробуй это –
import java.io.File; import android.app.Activity; import android.content.Context; import android.os.Bundle; public class HelloWorld extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle *) { super.onCreate(*); setContentView(R.layout.main); } @Override protected void onStop(){ super.onStop(); } //Fires after the OnStop() state @Override protected void onDestroy() { super.onDestroy(); try { trimCache(this); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void trimCache(Context context) { try { File dir = context.getCacheDir(); if (dir != null && dir.isDirectory()) { deleteDir(dir); } } catch (Exception e) { // TODO: handle exception } } public static boolean deleteDir(File dir) { if (dir != null && dir.isDirectory()) { String[] children = dir.list(); for (int i = 0; i < children.length; i++) { boolean success = deleteDir(new File(dir, children[i])); if (!success) { return false; } } } // The directory is now empty so delete it return dir.delete(); } }
См. Эти ссылки -
- как к сплошнолесосечным данным кэша-оф-приложения с помощью кода
Чтобы очистить данные приложения, попробуйте этот способ. Я думаю, это поможет вам.
public void clearApplicationData() { File cache = getCacheDir(); File appDir = new File(cache.getParent()); if (appDir.exists()) { String[] children = appDir.list(); for (String s : children) { if (!s.equals("lib")) { deleteDir(new File(appDir, s));Log.i("TAG", "**************** File /data/data/APP_PACKAGE/" + s + " DELETED *******************"); } } } } public static boolean deleteDir(File dir) { if (dir != null && dir.isDirectory()) { String[] children = dir.list(); for (int i = 0; i < children.length; i++) { boolean success = deleteDir(new File(dir, children[i])); if (!success) { return false; } } } return dir.delete(); }
Просто разъяснение, ответы работают правильно, за исключением того, что вам нужно передать контекст приложения в trimCache вместо контекста Activity (чтобы избежать утечки памяти), поскольку trimCache является статическим методом.
@Override protected void onDestroy() { super.onDestroy(); try { trimCache(getApplicationContext()); //if trimCache is static } catch (Exception e) { e.printStackTrace(); } }
Однако в противном случае вы можете сделать trimCache нестатичным, и нет необходимости передавать какой-либо Контекст.
public void trimCache() { try { File dir = getCacheDir(); if (dir != null && dir.isDirectory()) { deleteDir(dir); } } catch (Exception e) { // TODO: handle exception } }