दिलचस्प पोस्ट
ग्लोबल्स (), स्थानीय (), और वार्स () में अंतर क्या है? एंड्रॉइड: .sqlite एक्सटेंशन के साथ संपत्ति फ़ोल्डर एसक्यूलाइट डेटाबेस फ़ाइल तक पहुँचने एएसपी.नेट एमवीसी 3 रेज़र – संपादक को जोड़ना वर्ग वहाँ ms-access में एक group_concat फ़ंक्शन है? हमें नए कीवर्ड की आवश्यकता क्यों है और ओवरराइड को छुपाने के लिए डिफ़ॉल्ट व्यवहार क्यों है? मैवेन के साथ DLL निर्भरता प्रबंधित करना कॉलम में पंक्तियों को एक सेल में एक्सेल में कैसे मर्ज करना है? "कनेक्ट विफल: उपयोगकर्ता 'रूट' @ 'लोकलहोस्ट' (प्रवेश पासवर्ड: हां) के लिए प्रवेश अस्वीकृत" php फ़ंक्शन से क्लास चर के संबंध में अप-कास्टिंग और डाउन-कास्टिंग के बीच अंतर क्या है PHP से MySQL में डालें (jQuery / AJAX) मुझे वितरित संशोधन नियंत्रण बेच मैं एक्लिप्स में एंड्रॉइड सपोर्ट लाइब्रेरी स्रोत को कैसे जोड़ूं? पर कस्टम कस्टम देखें विवरण सभी सबव्यूज़ निकालें? कैसे JPanel में पृष्ठभूमि चित्र सेट करने के लिए

एंड्रॉइड: java.lang.OutOfMemoryError:

मैंने एक ऐसा एप्लिकेशन विकसित किया है जो एंड्रॉइड पर बहुत से छवियों का उपयोग करता है।

पेंट करने योग्य फ़ोल्डर में बहुत सारे चित्र मौजूद हैं, और 100 से ज्यादा कहते हैं, मैं छवियों के एनीमेशन के लिए आवेदन विकसित कर रहा हूं। मैंने GIF छवियों को दिखाने के लिए छविदृश्य का उपयोग किया था मैंने स्प्लिट जीआईएफ छवियों की संकल्पना को कई पीएनजी प्रारूप छवियों में इस्तेमाल किया है और फिर इसका उपयोग करें I

हर बार जब उपयोगकर्ता ऐप में प्रवेश करता है, तो मैं जब तक उपयोगकर्ता को java.lang.OutOfMemoryError मिलता है, तब तक मेमोरी को और अधिक बढ़ता दिखाई दे सकता है।

तो कई छवियों को संभालने का सबसे अच्छा / सही तरीका क्या है?

नीचे मेरा कोड है:

dog_animation.xml

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/DogView" android:orientation="vertical" > <ImageView android:id="@+id/dog_animation" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0.19" /> 

dog_animation.xml (ड्रायबल फ़ोल्डर)

 <?xml version="1.0" encoding="utf-8"?> 

 <item android:drawable="@drawable/image" android:duration="50"/> <item android:drawable="@drawable/image1" android:duration="50"/> <item android:drawable="@drawable/image2" android:duration="50"/> <item android:drawable="@drawable/image3" android:duration="50"/> <item android:drawable="@drawable/image4" android:duration="50"/> <item android:drawable="@drawable/image5" android:duration="50"/> <item android:drawable="@drawable/image6" android:duration="50"/> <item android:drawable="@drawable/image7" android:duration="50"/> <item android:drawable="@drawable/image8" android:duration="50"/> <item android:drawable="@drawable/image9" android:duration="50"/> <item android:drawable="@drawable/image10" android:duration="50"/> <item android:drawable="@drawable/image11" android:duration="50"/> <item android:drawable="@drawable/image12" android:duration="50"/> <item android:drawable="@drawable/image13" android:duration="50"/> <item android:drawable="@drawable/image14" android:duration="50"/> <item android:drawable="@drawable/image15" android:duration="50"/> <item android:drawable="@drawable/image16" android:duration="50"/> <item android:drawable="@drawable/image17" android:duration="50"/> <item android:drawable="@drawable/image18" android:duration="50"/> <item android:drawable="@drawable/image19" android:duration="50"/> <item android:drawable="@drawable/image20" android:duration="50"/> <item android:drawable="@drawable/image21" android:duration="50"/> <item android:drawable="@drawable/image22" android:duration="50"/> <item android:drawable="@drawable/image23" android:duration="50"/> <item android:drawable="@drawable/image24" android:duration="50"/> <item android:drawable="@drawable/image25" android:duration="50"/> <item android:drawable="@drawable/image26" android:duration="50"/> <item android:drawable="@drawable/image27" android:duration="50"/> <item android:drawable="@drawable/image28" android:duration="50"/> <item android:drawable="@drawable/image29" android:duration="50"/> <item android:drawable="@drawable/image30" android:duration="50"/> <item android:drawable="@drawable/image31" android:duration="50"/> <item android:drawable="@drawable/image32" android:duration="50"/> <item android:drawable="@drawable/image33" android:duration="50"/> <item android:drawable="@drawable/image34" android:duration="50"/> <item android:drawable="@drawable/image35" android:duration="50"/> <item android:drawable="@drawable/image36" android:duration="50"/> <item android:drawable="@drawable/image37" android:duration="50"/> <item android:drawable="@drawable/image38" android:duration="50"/> <item android:drawable="@drawable/image39" android:duration="50"/> <item android:drawable="@drawable/image40" android:duration="50"/> <item android:drawable="@drawable/image41" android:duration="50"/> <item android:drawable="@drawable/image42" android:duration="50"/> <item android:drawable="@drawable/image43" android:duration="50"/> <item android:drawable="@drawable/image44" android:duration="50"/> <item android:drawable="@drawable/image45" android:duration="50"/> <item android:drawable="@drawable/image46" android:duration="50"/> <item android:drawable="@drawable/image47" android:duration="50"/> <item android:drawable="@drawable/image48" android:duration="50"/> <item android:drawable="@drawable/image49" android:duration="50"/> <item android:drawable="@drawable/image50" android:duration="50"/> <item android:drawable="@drawable/image51" android:duration="50"/> <item android:drawable="@drawable/image52" android:duration="50"/> <item android:drawable="@drawable/image53" android:duration="50"/> <item android:drawable="@drawable/image54" android:duration="50"/> <item android:drawable="@drawable/image55" android:duration="50"/> <item android:drawable="@drawable/image56" android:duration="50"/> 

Dog_Animation.java

 public class Dog_Animation extends Activity { Timer timer = new Timer(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.dog_animation); ImageView img = (ImageView) findViewById(R.id.dog_animation); img.setBackgroundResource(R.drawable.dog_animation); AnimationDrawable frameAnimation = (AnimationDrawable) img .getBackground(); frameAnimation.start(); timer.schedule(new TimerTask() { public void run() { Intent intent = new Intent(Dog_Animation.this, Man_Animation.class); startActivity(intent); } }, 10000); } } 

अब समस्या तब होती है जब मैं एक गतिविधि से दूसरे स्थान पर जाने की कोशिश करता हूं, जिसके पास कुछ दूसरी छवि होती है जिससे मुझे java.lang.OutOfMemory कि यह मुझे java.lang.OutOfMemory त्रुटि दे रही है।

मैंने इतने सारे अलग-अलग समाधानों की तरह कोशिश की है जैसे

 @Override protected void onDestroy() { super.onDestroy(); unbindDrawables(findViewById(R.id.DogView)); System.gc(); } 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(); } } 

और इसलिए अन्य भी लेकिन कोई समाधान मेरे लिए काम नहीं कर रहा है कृपया मुझे इस समस्या को हल करने में मदद करें। यहां तक ​​कि मैंने http://androidactivity.wordpress.com/2011/09/24/solution-for-outofmemoryerror-bitmap-size-vm-budget/ इस लिंक पर भी समस्या का समाधान नहीं किया है।

वेब के समाधान से एकत्रित समाधान "एंड्रॉइड: java.lang.OutOfMemoryError:"

अपने AndroidManifest.xml में यह एप्लिकेशन टैग के अंदर रखता है, इस तरह बड़े जोड़ें:

 <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:largeHeap="true"/> 

बदलने के:

 img.setBackgroundResource(R.drawable.dog_animation); 

द्वारा:

 img.setImageBitmap(decodeSampleBitmapFromResource(R.drawable.dog_animation, width, height)); //dont forget to replace width and heigh by your imageview dimension 

एक जोड़:

 public static int calculateInSampleSize( BitmapFactory.Options options, int reqWidth, int reqHeight) { final int height = options.outHeight; final int width = options.outWidth; int inSampleSize = 1; if (height > reqHeight || width > reqWidth) { final int heightRatio = Math.round((float) height / (float) reqHeight); final int widthRatio = Math.round((float) width / (float) reqWidth); inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio; } return inSampleSize; } 

तथा

 public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId, int reqWidth, int reqHeight) { final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeResource(res, resId, options); options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight); options.inJustDecodeBounds = false; return BitmapFactory.decodeResource(res, resId, options); } 

यह से है: http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

पर अपनी एनीमेशन रोक रोकने की कोशिश करें () उस वजह से जीसीईडी नहीं मिलने का एक बड़ा मौका है इस साइट http://tinypng.org का उपयोग करके उर बिटमैप को अनुकूलित भी करें, अगर आपको अल्फा परत की आवश्यकता नहीं है, तो इसे 24 बिट पर सेट करें

उपर्युक्त उत्तर में एक getResources() याद आ रही है

 img.setImageBitmap(decodeSampleBitmapFromResource(R.drawable.dog_animation, width, height)); 

तो यह हो जाता है

 img.setImageBitmap(decodeSampleBitmapFromResource(getResources(), R.drawable.dog_animation, width, height)); 
 try { //Code here that cause OutOfMemoryError } catch (Error ee) { ee.printStacktrace(); }