如何管理缓存?

时间:2011-06-08 08:51:25

标签: android caching

我正在编写一个应用程序,我计划将从服务器读取的图像存储到Android缓存中。正如我在某处读到的那样“只要内存不足,就可以通过系统清除Android缓存”,所以如果删除了图像,我将如何获得图像被删除的指示?

2 个答案:

答案 0 :(得分:1)

我认为没有办法知道Android已经清除了缓存。但是,如果将数据保存到缓存文件夹,则可以保留文件名并检查文件是否存在。

我的数据下载任务首先检查缓存,如果没有数据,则下载开始。否则使用缓存文件。

答案 1 :(得分:0)

为清除应用缓存,请将此代码放入onDestroy()

protected void onDestroy(){super.onDestroy();

    try {
        trimCache(this);
       // Toast.makeText(this,"onDestroy " ,Toast.LENGTH_LONG).show();
    } 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();
 }