سؤال

كنت أحاول إنشاء تطبيق يحتوي أيضًا على التسهيلات للسماح للمستخدم باختيار خلفية يرغب في تعيينه. لقد تمكنت من ذلك عن طريق استدعاء نية المعرض. بمجرد قيام المستخدم بتحديد صورة محددة ، يتم إرجاع مسار بيانات الصورة إليّ ، ثم أقوم بالمعاينة للمستخدم عن طريق تعيين الصورة على ImageView.

المشكلة تتراجع عندما يكون حجم الصورة (و/أو الدقة) أكبر مما يتوقعه Android. هذا يؤدي إلى فشل الوحدة النمطية الخاصة بي.

وكما لو لم يكن هذا كافيًا ، فإن المستخدم يحاول تحديد بعض الخلفية الأخرى (وفي حالة الاختبار الخاصة بي ، كانت الخلفية "الأخرى" ذات حجم> 700 كيلو بايت) ثم تعطل التطبيق مع "OutofMemoryException" ...

helppp لي هنا يا رفاق !!!

لقصد المعرض أستخدمه:

Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"),SELECT_IMAGE);

لوضع خلفية أستخدمها:

InputStream is = getContentResolver().openInputStream(Uri.parse(uri_returned_from_intent)); 
Bitmap bgImage = BitmapFactory.decodeStream(is);//OutOfMemory error thrown here
setWallpaper(bgImage);

لذلك لدي مشكلتان للتعامل مع:

  1. كيفية قصف الصورة قبل تعيينها كخلفية ...
  2. لا يمكن فهم y OutofMemoryException ، لا شيء من أحجام الصور الخاصة بي يتجاوز 1 ميجابايت ... وأعتقد أن ميزانية VM في حالة N1 هي 24 ميجابايت إذا لم تكن مخطئة ...
هل كانت مفيدة؟

المحلول

يجب فك تشفير خيار Enlamplesize لتقليل استهلاك الذاكرة.

خيار آخر يمكن أن تساعدك IncustDecodeBounds في العثور

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top