我的应用程序的缓存和数据太大

问题描述:

我有一个Android应用程序,使用Jsoup库, 网站分析数据,但我的问题是,通过应用程序浏览了一段时间之后缓存变得越来越大和后一对夫妇天左右的使用时的缓存太大(达到高达200MB!)应用程序将开始落后,并最终抛出OutOfMemory异常。我的应用程序的缓存和数据太大

我已经使用LeakCanary库,它检测到一些泄漏,但它们只有几KB,我在我的应用程序中使用的唯一图像是我用毕加索图书馆加载的小图片,我怀疑他们是造成这种混乱的人。

如果任何人都可以帮助,我将非常感谢它谢谢! 下面是一些图片,如果他们可以帮助任何事情。

应用程序的数据和缓存大小
The app's data and cache size

主屏幕
Home screen

+0

缓存不会导致OOM异常。缓存是磁盘空间。 OOM来自RAM。 –

+0

@GabeSechan那可能是什么?我真的很困惑这个 – user8737583

您可以通过的onCreate编写应用类

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

毕加索的验证码限制毕加索缓存大小使用自动缓存节省加载时间。 您也可以通过将此类添加到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)); 
+0

但毕加索一次又一次缓存相同的图像吗? – user8737583

+0

我不确定这个,但它不会一次又一次缓存相同的图像。 – kunwar97

+0

那么我想是因为即使在应用程序中的所有图像缓存也不会达到甚至100MB – user8737583