2012-09-30 19 views
5

त्रुटि OutOfMemoryError हल करने के लिए कैसे:का उपयोग कर LayerDrawable

java.lang.OutOfMemoryError 
at android.graphics.Bitmap.nativeCreate(Native Method) 
at android.graphics.Bitmap.createBitmap(Bitmap.java:605) 
at android.graphics.Bitmap.createBitmap(Bitmap.java:551) 
at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:437) 
at android.graphics.BitmapFactory.finishDecode(BitmapFactory.java:618) 
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:593) 
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:445) 
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:775) 
at android.content.res.Resources.loadDrawable(Resources.java:1968) 
at android.content.res.Resources.getDrawable(Resources.java:677) 
at android.widget.ImageView.resolveUri(ImageView.java:542) 
at android.widget.ImageView.setImageResource(ImageView.java:315) 
at app.Main.GridActivity.initaliseLevel(GridActivity.java:245) 
at app.Main.GridActivity.load_player_settings(GridActivity.java:180) 
at app.Main.GridActivity.onResume(GridActivity.java:79) 
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1158) 
at android.app.Activity.performResume(Activity.java:4607) 
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2448) 
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2486) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2000) 
at android.app.ActivityThread.access$600(ActivityThread.java:128) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:4517) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760) 
at dalvik.system.NativeStart.main(Native Method) 

छवियों से स्थापित कर रहे हैं: अन्य उत्तर पढ़ने से

ImageButton b0 = (ImageButton) findViewById(R.id.ImageButton00); 
Resources r = getResources(); 
Drawable[] layers = new Drawable[2]; 
layers[0] = r.getDrawable(R.drawable.image); 
layers[1] = r.getDrawable(R.drawable.imagetwo); 
LayerDrawable layerDrawable = new LayerDrawable(layers); 
b0.setImageDrawable(layerDrawable); 

, मैं इकट्ठा कि छवियों के उपयोग के बाद पुनर्नवीनीकरण किया जा करने की जरूरत है। क्या यह सबसे अच्छा विकल्प है? यदि ऐसा है तो LayerDrawable को बिटमैप में कैसे परिवर्तित किया जा सकता है, इसलिए इसे पुनर्नवीनीकरण किया जा सकता है?

+0

छवि आप लोड करने के लिए कोशिश कर रहे हैं के आयाम (चौड़ाई x ऊँचाई) क्या है? – dumbfingers

+0

लगभग 25 लेयर ड्रॉबल्स सभी 175x175px हैं और 2-3 परतों – Isaac

+0

से मिलकर मुझे कुछ मिल रहा है। काफी छोटी छवियां। अगर मैं एक छवि के अलावा सभी को टिप्पणी करता हूं, कोई समस्या नहीं है, लेकिन कुछ और इसे दुर्घटनाग्रस्त करता है। पहली छवि पर अस्पष्टता सेटिंग्स है ... सुनिश्चित नहीं है कि यह ऐसा क्यों कर रहा है? – RiddlerDev

उत्तर

2

आपके मैनिफेस्ट में> एप्लिकेशन विशेषता अनुभाग में "बड़ी ढेर" सेटिंग है, एप्लिकेशन नोड्स में अपनी गतिविधि का चयन करें और फिर हीप सेटिंग्स में "सत्य" चुनें, जब तक मैंने रिसाव को हल नहीं किया।

और इसके अलावा मैं अपने गतिविधि में इस है:

private void unbindDrawables(View view) { 
    if (view.getBackground() != null) { 
     view.getBackground().setCallback(null); 
    } 
    if (view instanceof ViewGroup) { 
     for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) { 
      unbindDrawables(((ViewGroup) view).getChildAt(i)); 
     } 
     ((ViewGroup) view).removeAllViews(); 
    } 
} 

    @Override 
protected void onDestroy() { 
    super.onDestroy(); 

    unbindDrawables(findViewById(R.id.nameslayout)); 
    System.gc(); 
} 

हॉप मदद करता है कि

+0

आप सर रॉक! इससे मुझे कम से कम अपने फोन पर अपनी स्क्रीन लोड करने में सक्षम होना चाहिए ताकि मैं अनुकूलित करना जारी रख सकूं। यह सुनिश्चित करने के लिए कि मैं आपकी जीसी सामग्री भी जोड़ूं क्योंकि यह अच्छा दिखता है। धन्यवाद! – RiddlerDev

+0

आई ग्लेड मैं मदद करने में सक्षम था !!! –

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