通用图像加载器 – 手动清除caching

我使用通用图像加载器在列表视图中显示我的应用程序中的图像。 我正在使用UnlimitedDiscCache因为根据文档,这是最快的caching机制。

但是,我想清除我的应用程序closures时的光盘caching(例如在onStop() ),但只有最老的caching文件超过给定的限制应该被删除(像TotalSizeLimitedDiscCache一样)。

我知道ImageLoader.clearDiscCache()但在我的情况下,这将清除完整的caching,因为我以前使用UnlimitedDiscCache

所以我希望在用户加载和滚动列表视图时拥有最快速的caching机制,并在用户不再与应用程序交互时清除caching。

任何想法我可以如何实现这一目标?

Solutions Collecting From Web of "通用图像加载器 – 手动清除caching"

从这里检查这个https://stackoverflow.com/a/7763725/1023248可能会帮助你..

 @Override protected void onDestroy() { // closing Entire Application android.os.Process.killProcess(android.os.Process.myPid()); Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit(); editor.clear(); editor.commit(); trimCache(this); super.onDestroy(); } 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; } } } // <uses-permission // android:name="android.permission.CLEAR_APP_CACHE"></uses-permission> // The directory is now empty so delete it return dir.delete(); } 

如果要清除内存中的caching,可以使用以下代码:

 MemoryCacheUtils.removeFromCache(imageUri, ImageLoader.getInstance().getMemoryCache()); 

如果您还想清除磁盘中的caching,则可以使用以下代码:

 DiscCacheUtils.removeFromCache(imageUri, ImageLoader.getInstance().getDiscCache()); 

这是清除caching的简单方法。 你可以在这个主题中find类似的答案:

如何使用Universal Image Loader Android强制清除caching?

我希望这个信息是有帮助的。 🙂