2012-11-22 13 views
5

से फ्री मेमोरी मैं अपने ऐप की कई गतिविधियों में एनीमेशनड्राबल्स का उपयोग कर रहा हूं।एनीमेशन ड्रॉबल

public void prepareVideo (int resourceBall, String animation, int width, int height){ 

    imgBall = (ImageView)findViewById(resourceBall); 
    imgBall.setVisibility(ImageView.VISIBLE); 
    String resourceNameAnimation = animation; 
    int id_res = getResources().getIdentifier(resourceNameAnimation, "drawable", getPackageName()); 
    imgBall.setBackgroundResource(id_res); 
     LayoutParams latoutFrame = imgBall.getLayoutParams(); 
    latoutFrame.width = width; 
    latoutFrame.height = height; 
    imgBall.setLayoutParams(latoutFrame); 
    frame = (AnimationDrawable) imgBall.getBackground(); 


} 

तो मैं फोन: इससे उन्हें inicializate करने के लिए कोड है imgBall.post (नई StartAnimation());

कि एक runnable फोन:

class StartAnimation implements Runnable { 

    public void run() { 

frame.start(); 

    } 

} 

समस्या मैं कई एनिमेशन है कि एक ही एक्सएमएल (फ्रेम से फ्रेम) का उपयोग करता हैं का उपयोग करें। मुझे इस विधि को एक ही एनीमेशन के साथ कई गतिविधियों में कॉल करना है। अंततः मुझे एक बहिष्कार मिलता है। मैं स्क्रीन के बीच मुक्त स्मृति कोशिश कर रहा हूँ: "पुनर्नवीनीकरण बिटमैप उपयोग करने के लिए कोशिश कर रहा है"

किसी अन्य तरीके से जानते हैं:

for (int i = 0; i < frame.getNumberOfFrames(); ++i){ 
    Drawable frame_rescue = frame.getFrame(i); 
    if (frame_rescue instanceof BitmapDrawable) { 
     ((BitmapDrawable)frame_rescue).getBitmap().recycle(); 
    } 
    frame_rescue.setCallback(null); 

समस्या यह है कि जब मैं एक resourde फिर से इस्तेमाल करने की कोशिश y अन्य त्रुटि मिलती है मुफ्त मेमोरी का?

उत्तर

0

मुझे एक ही समस्या थी, समस्या चलने योग्य थी। प्रत्येक एनीमेशन को एनीमेशन बनाने के लिए एक स्वतंत्र थ्रेड बनाना गतिविधियां गतिविधि को नष्ट करने और विचारों और कॉलबैक को साफ़ करने के बाद जारी रहती हैं। तो स्वतंत्र धागे के बिना एनिमेशन शुरू करने से जीसी अप्रयुक्त संसाधन एकत्रित कर देता है।

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