我有一个Android应用程序,使用Jsoup库解析来自网站的数据, 但我的问题是,在浏览应用程序一段时间之后,缓存变得越来越大,并且在缓存太大(达到200mb!)后使用了几天左右应用程序将开始滞后,最终将抛出OutOfMemory异常。
我使用过LeakCanary库并且它检测到了一些泄漏,但它们只有几KB,我在我的应用程序中使用的唯一图像是我用Picasso库加载的小型图片,我怀疑它们是导致这种混乱的那个。
如果有人可以提供帮助,我将非常感谢谢谢! 以下是一些图片,如果他们可以提供任何帮助。
答案 0 :(得分:1)
您可以通过在onCreate of Application类
中编写此代码来限制Picasso缓存大小 private static final long IMAGE_CACHE_SIZE = 1024 * 1024 * 100; // 100MB
Picasso.Builder builder = new Picasso.Builder(this);
builder.downloader(new OkHttpDownloader(this, IMAGE_CACHE_SIZE));
Picasso built = builder.build();
built.setIndicatorsEnabled(false);
built.setLoggingEnabled(true);
Picasso.setSingletonInstance(built);
Picasso使用自动缓存来节省加载时间。 您还可以通过将此类添加到com.squareup.picasso包中来清除毕加索缓存。
package com.squareup.picasso;
public class PicassoTools {
public static void clearCache (Picasso p) {
p.cache.clear();
}
}
因为缓存具有包可见性,所以此util类可以为您清除缓存。你只需要打电话:
PicassoTools.clearCache(Picasso.with(context));