2015-10-27 12 views
17

मैंने अभी यूनिवर्सल इमेज लोडर से ग्लाइड तक जाने शुरू कर दिया है। हालांकि, जब पुनर्नवीनीकरण में फिर से नीचे स्क्रॉल करते हैं तो मुझे चेतावनी संदेश मिलते हैं।पुनर्नवीनीकरण में ग्लाइड का उपयोग करके चेतावनी

W/Bitmap: Called reconfigure on a bitmap that is in use! This may cause graphical corruption! 

यदि मैं किसी अन्य छवि लोडिंग लाइब्रेरी के लिए ग्लाइड को स्वैप करता हूं, तो चेतावनी दूर हो जाती है। छवियों से संबंधित bindViewHolder में कोड:

Glide.with(viewHolder.imageView.getContext()) 
      .load(DisplayImageUtil.getImageUrl(item.getImageUrl(), 600)) 
      .diskCacheStrategy(DiskCacheStrategy.ALL) 
      .into(viewHolder.imageView); 

एक नेक्सस 5.

+0

क्या यह एंड्रॉइड एम पर हो रहा है? https://github.com/bumptech/glide/issues/743 – TWiStErRob

उत्तर

0

यह here चर्चा की है पर परीक्षण किया गया,

आम तौर पर इस बिटमैप का दुरुपयोग करने का परिणाम है, या तो एक बिटमैप वापस लौट कर इंटरमीडिएट के बिना कई बार पूल में, या संबंधित लक्ष्य पर स्पष्ट() को कॉल करने के बाद बिटमैप का संदर्भ देकर। यदि आपके पास कस्टम ट्रांसफॉर्मेशन हैं, तो यह पर एक अच्छी जगह है, यह सुनिश्चित करने के लिए बारीकी से देखें कि आप पूल पर दो बार बिटमैप नहीं लौट रहे हैं। आप इस मुद्दे के बारे में विकी पर अधिक देख सकते हैं: https://github.com/bumptech/glide/wiki/Resource-re-use-in-Glide

जो लॉग आप देखते हैं वह कैच ब्लॉक (पकड़ा अपवाद) से है। सुनिश्चित करें कि आप कर रहे हैं:

  • जब से तुम recyclerView उपयोग कर रहे हैं संसाधन के

संदर्भ 2 एक लक्ष्य को ध्यान में रखते बिटमैप

  • संसाधन समाशोधन नहीं लक्ष्य दृश्य पुन: उपयोग करने लोड करने का प्रयास नहीं लेकिन पकड़े , शायद दूसरा बिंदु सच है यानी सभी बिटमैप संदर्भों को पकड़ते समय दृश्य को रीसाइक्लिंग करना

  • +0

    मुझे यकीन नहीं है कि मैं समस्या को पूरी तरह से समझता हूं।मैं कोई कस्टम रीसाइक्लिंग नहीं कर रहा हूं, मैं केवल रीसाइक्लर व्यू से बाइंडव्यूहोल्डर में छवि लोड करता हूं। समस्या तब होती है जब मैं स्क्रॉल करता हूं, और छवि फिर से लोड होती है। क्या मुझे कुछ ग्लाइड के साथ मैन्युअल रूप से संभालना है? केवल पहले यूआईएल का इस्तेमाल किया, और इन तरह की किसी भी समस्या में भाग नहीं लिया। – Bendik

    +0

    @ केए, जो आप "पकड़ ब्लॉक" का जिक्र कर रहे हैं? मैंने पाया कि यह देशी [Bitmap.cpp] से एक चेतावनी है (https://github.com/android/platform_frameworks_base/blob/marshmallow-release/core/jni/android/graphics/Bitmap.cpp#L256)। – TWiStErRob

    +3

    यह उत्तर सही नहीं है, उद्धरण यहां एक अवैध चेतावनी का संदर्भ देता है, यहां चेतावनी नहीं। मूल प्रश्न में चेतावनी ग्लाइड के सामान्य उपयोग के दौरान होगी और बिटमैप्स का दुरुपयोग करने का नतीजा नहीं है। –

    1

    मैं एंड्रॉइड एम (नेक्सस 5x) पर अपने ऐप के पहले भाग के बाद एक ही समस्या पर चलता हूं।

    संपादित करें: ग्लाइड Github पर इस मुद्दे खोलने के बाद - https://github.com/bumptech/glide/issues/743, मैंने पाया कि मेरी orignal "समाधान" समस्या का समाधान नहीं है, केवल संदेशों को छिपाने। चेतावनी एंड्रॉइड बिटमैप से आती है और ऐसा इसलिए है क्योंकि ग्लाइड बेहतर प्रदर्शन के लिए बिटमैप का उपयोग करता है।

    +0

    सावधान रहें, RecyclerView में आइटम दृश्य गणना बढ़ाना आवश्यक से अधिक स्मृति का उपयोग कर सकता है। – TWiStErRob

    +0

    @TWiStErRob - आप सही हैं। मैंने किसी को गलत रास्ते पर गुमराह करने से रोकने के लिए जवाब संपादित किया। – JirkaV

    0

    छवि लोड करने से पहले Glide.clear() को कॉल करने का प्रयास करें।

    Glide.clear(viewHolder.imageView); 
    Glide.with(viewHolder.imageView.getContext()) 
         .load(DisplayImageUtil.getImageUrl(item.getImageUrl(), 600)) 
         .diskCacheStrategy(DiskCacheStrategy.ALL) 
         .into(viewHolder.imageView); 
    

    इस सहायता की आशा करें।

    +3

    जोड़ना Glide.clear() ने मेरे लिए समस्या को खत्म नहीं किया :( – tieorange

    0

    मुझे चेतावनी और ग्राफिकल भ्रष्टाचार मिल रहा था। यह पुनर्नवीनीकरण दृश्य के ऊपर और नीचे दिखाई देने वाले क्लिप बिट्स के रूप में था और बहुत जल्दी स्क्रॉल करते समय वहां रहना था।

    फ्रेम लेआउट के अंदर छवि दृश्य डालने से ग्राफिकल भ्रष्टाचार से छुटकारा पा लिया गया है।

    +0

    मेरे लिए काम नहीं किया: / –

    0

    आप एंड्रॉइड स्टूडियो पर लॉगकैट फ़िल्टर के साथ लॉग साफ़ कर सकते हैं।

    एंड्रॉइड लॉगकैट फ़िल्टर के रेगेक्स में ^(?!AbsListView|IInputConnectionWrapper|ApplicationPackageManager|Bitmap|ViewRootImpl) जोड़ें।

    संबंधित मुद्दे