दिलचस्प पोस्ट
आलोचना मेरे गैर-घुसपैठ ढेर डीबगर प्रतिबिंब: कैसे एक सामान्य विधि प्राप्त करने के लिए? सी / सी ++ फ़ाइल ऑर्डर / सर्वोत्तम प्रथाएं शामिल हैं कॉलिंग नींद (5); और टेक्स्ट फ़ील्ड को अपडेट करने से काम नहीं कर रहा है कैसे मुख्य आईडीसी प्रक्रिया आईडी से संभाल पाने के लिए? एंड्रॉइड कैसे अपनी उंगली के बाद एक चिकनी लाइन आकर्षित करने के लिए क्रॉसवॉक के लिए ऐप आकार में 71 एमबी जोड़ा गया बाहरी लाइब्रेरी से सीमके लिंक अजगर में डायर और __dict__ के बीच सबसे बड़ा अंतर क्या है क्या हम आम तौर पर साधारण दोहरी शब्दों के बजाए फ्लोट के लिए फ्लोट लिटिक्ल्स का इस्तेमाल करते हैं? `नई त्रुटि फेंक 'और' कुछ ऑब्जेक्ट फेंक 'में अंतर क्या है? जावा में अपवादों के लिए कीवर्ड फेंकता है ViewHolder का उपयोग करके एंड्रॉइड सूचीदृश्य Ggplot2 में एक उलट, लॉग 10 स्केल कैसे प्राप्त करें? IOS में एक पॉप अप संवाद बॉक्स को कार्यान्वित कैसे करें

एंड्रॉइड: 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/ इस लिंक पर भी समस्या का समाधान नहीं किया है।

Solutions Collecting From Web of "एंड्रॉइड: 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(); }