2017-07-27 32 views
1

我正在使用Glide在我的PagerAdapter中加載GIF。使用Glide加載gif時的高內存使用情況

圖像來自高分辨率和大量幀的服務器。

我注意到一旦GIF被加載並播放,內存使用率很高,並且可能導致Out Of Memory

我嘗試了Glide的下列方法(.override(),skipMemoryCache(),diskCacheStrategy()),但內存使用沒有改變。

Glide中是否有其他方法可以使用?

Glide.with(mContext) 
      .load(imageUrl) 
      .override(480, 342) 
      .listener(new RequestListener<String, GlideDrawable>() { 
       @Override 
       public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { 
        return false; 
       } 

       @Override 
       public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { 
        imageViewBackground.setImageDrawable(resource); 
        return false; 
       } 
      }) 
    .into(imageViewBackground); 
+0

你可以添加你使用的代碼嗎? –

+0

你需要在你的gif中執行一箇中心裁剪,如果你沒有意識到,不要操縱緩存。 – Enzokie

+0

@YamenNassif,添加了我使用的代碼。 – eysidi

回答

0
Glide.with(mContext) 
     .load(imageUrl) 
     .override(480, 342) 
     .into(...) 

倍率奏效了,我並沒有更多的 RemoteViews爲窗口更新超過

0

我得到這樣多嘗試

Glide.with(mContext) 
    .load(media_url) 
    .thumbnail(Glide 
    .with(mContext) 
    .load(media_url) 
    .listener(new RequestListener<String, GlideDrawable>() { 
           @Override 
           public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { 
            progressBar.setVisibility(View.GONE); 
            return false; 

           } 

           @Override 
           public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { 
            progressBar.setVisibility(View.GONE); 
            return false; 
           } 
          }) 
        ) 

        .dontAnimate() 
        .into(mIvMessageImage); 
後最高位內存使用錯誤
+0

它需要一些時間,但玩。 – bhoomika