2012-09-22 22 views
8

मैं छवियों को सूचियों में लोड करने के लिए एक छवि लोडर बना रहा हूं - इसलिए यह चिकनी होने के लिए, छवि को दृश्य में सेट करने के अलावा पृष्ठभूमि थ्रेड में सबकुछ चलाने की आवश्यकता है। समस्या यह है कि कोड बेलो में रननेबल कभी-कभी निष्पादित नहीं होता है। मैं पृष्ठभूमि धागे से setImage विधि को बुला रहा हूँ।View.post() नहीं कहा जाता है?

protected void setImage(final ImageView img, final Bitmap bm, String hash) { 
    img.setTag(TAG_RESPONSE, hash); 
    Log.v(TAG, "setting image bitmap1"); 
    //TODO: here is the bug - sometimes the runnable below is not called 
    img.post(new Runnable() { 

     @Override 
     public void run() { 
      Log.v(TAG, "setting image bitmap2"); 
      img.setImageBitmap(bm); 
      img.invalidate(); 
     } 
    }); 

} 

किसी के पास कोई विचार है कि मैं क्या गलत कर रहा हूं?

उत्तर

13

documentation के अनुसार, पोस्ट (...) को केवल एक विंडो से जुड़ा हुआ होने पर गैर-यूआई थ्रेड से कॉल किया जाना चाहिए। यह समस्या हो सकती है।

+4

मैंने View.post को हैंडलरपोस्ट के साथ बदल दिया और ऐसा लगता है कि अब मक्खन की तरह काम करता है। – martinpelant

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