2017-10-07 85 views
0

我有一個Android應用程序,使用Jsoup庫, 網站分析數據,但我的問題是,通過應用程序瀏覽了一段時間之後緩存變得越來越大和後一對夫婦天左右的使用時的緩存太大(達到高達200MB!)應用程序將開始落後,並最終拋出OutOfMemory異常。我的應用程序的緩存和數據太大

我已經使用LeakCanary庫,它檢測到一些泄漏,但它們只有幾KB,我在我的應用程序中使用的唯一圖像是我用畢加索圖書館加載的小圖片,我懷疑他們是造成這種混亂的人。

如果任何人都可以幫助,我將非常感謝它謝謝! 下面是一些圖片,如果他們可以幫助任何事情。

應用程序的數據和緩存大小
The app's data and cache size

主屏幕
Home screen

+0

緩存不會導致OOM異常。緩存是磁盤空間。 OOM來自RAM。 –

+0

@GabeSechan那可能是什麼?我真的很困惑這個 – user8737583

回答

1

您可以通過的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

相關問題