我应用的缓存和数据太大

时间:2017-10-07 16:08:04

标签: android performance caching

我有一个Android应用程序,使用Jsoup库解析来自网站的数据, 但我的问题是,在浏览应用程序一段时间之后,缓存变得越来越大,并且在缓存太大(达到200mb!)后使用了几天左右应用程序将开始滞后,最终将抛出OutOfMemory异常。

我使用过LeakCanary库并且它检测到了一些泄漏,但它们只有几KB,我在我的应用程序中使用的唯一图像是我用Picasso库加载的小型图片,我怀疑它们是导致这种混乱的那个。

如果有人可以提供帮助,我将非常感谢谢谢! 以下是一些图片,如果他们可以提供任何帮助。

应用的数据和缓存尺寸为The app's data and cache size

主屏幕Home screen

1 个答案:

答案 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));