2015-02-13 6 views
1

Мне нужна помощь в отношении кэш-памяти в приложении для Android. Я запускаю сервер (android) в устройстве. Я хочу программно очистить кэш этого приложения. У меня есть база данных на этом сервере. На основе этой базы данных мои клиентские операции продолжаются. Поэтому я не хочу, чтобы это (База данных) получило эффект. Я просто хочу очистить кеш, чтобы не очищать данные. Пожалуйста, помогите мне с этим.Очистка кэша в приложении для Android Программно

ответ

3
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) { 
     e.printStackTrace(); 
     } 
    } 

    public static void trimCache(Context context) { 
     try { 
     File dir = context.getCacheDir(); 
     deleteDir(dir); 
     } catch (Exception e) { 
     e.printStackTrace(); 
     } 
    } 

    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(); 
     } 
     else { 
     return false; 
     } 
    } 
2

Код для очистки кэша:

public static void deleteCache(Context context) { 
    try { 
     File dir = context.getCacheDir(); 
     if (dir != null && dir.isDirectory()) { 
      deleteDir(dir); 
     } 
    } catch (Exception e) {} 
} 

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(); 
    } 
    return false; 
} 
Смежные вопросы