بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

تصاویر پر حجم و رم های کم حجم!

مدیریت گفتگو
Alireza.b 12 سال پیش
آخرین تغییر: 11 سال پیش

سلام

فرض کنید ما بک برنامه والپیپر داریم و عکس هایی HD به ابعاد 1080*1920 در آن وجود دارد.

خوب طبیعتا نمی توانیم در تک تک پوشه های drawable عکس ها را resize کنیم و بگذاریم، چون حجم برنامه تا 3 برابر بیشتر می شود.

از طرفی اگر این کار را نکنیم، اندروید مجبور می شود عکس ها را resize کند و در رم نگه دارد که دو مشکل به وجود می آید:

  1. افت شدید کیفیت
  2. به عنوان مثال اگر عکس ها را در یک گالری نشان دهیم، برنامه به سرعت کرش می کند.(به دلیل پر شدن رم (Out Of Memory))

خب پس چاره چیست؟

ممنون

نظرات

پاسخ‌ها 3

Reza AF 12 سال پیش

شما اگه طبق آموزشهای استاد، از option برای bitmap استفاده کنید این مشکل پیش نمیاد، یعنی تصاویر رو 4 یا 6 برابر یا هر مقداری که شما نیاز دارین کوچکتر لود کنید.

نظرات

uncocoder 12 سال پیش

کسی می تونه به من پاسخ این سئوال رو بده: یک جور تست هست از بچه هایی که همشون الان حرفی برای گفتن دارن :)

چرا بازی ها حتی تا 300 مگ از Ram رو اشغال می کنن اما باز Out Of Memory ندارن؟

نظرات

m_sh_m 12 سال پیش
بازی ها به طور موقت هروقت اجرا میشن حافظه اشغال میکنن و بعده اون فقط بعضی از استیت ها آخرش توی فایل ها ذخیره میشن و بعده اون با فضای حافظه کاری ندارن
مصطفی  11 سال پیش
واقعا چرا؟از چه تکنیکی استفاده می کنن؟ میشه استاد جواب سوالتون رو بفرمایید؟
Criss 11 سال پیش
دوستان اگر کسی اطلاعی در این زمینه داره توضیحاتی اضافه کنه که استفاده کنیم <
Mr7 11 سال پیش
اونها اصلا از SDK اندروید استفاده نمیکنن و از NDK استفاده میکنن البته یه چیزی توی یه سایت خارجی بود خوندم.
استاد به چه نکتهجالبی اشاره کردین قبلا سوالم بود! گفته بودین هربرنامه انقدر رم می تونه استفاده کنه و برام عجیب بود که پس اگه بیشتر بخواد چی و اینجوری جوابشو فک کردم که اینا دارن مدیریت می کنن و چیزی که لازمه رئ نگه می دارن و چیزی که نه رو دور می ریزن :D فک کنم درباره پپشته مشته خوندم به اون ربط داشته باشه؟ چقدر زیاد شد همشونم غلطن خخخخخ
فک کنم جوابشو پیدا کردم The memory usage of native code is not restricted by the Java heap size ----------------------------------------------------------------------------------------------- The only way to have as large a limit as possible is to do memory intensive tasks via the NDK, as the NDK does not impose memory limits like the SDK.
uncocoder 11 سال پیش
با اضافه شدن تصویر در حافظه Bitmap در OpenGL و حذف آن در حافظه متعلق به بازی ( کد جاوا ) در واقع تصاویر از حافظه برنامه خارج شده و در Heap Memory متعلق به GL قرار می گیرند، لذا محدودیتی در حجم وجود نخواهد داشت، فقط باید توجه کنید که عرض و ارتفاع تصاویر استاندارد در OpenGL باید توانی از 2 باشند.
Mr7 11 سال پیش
به به استاد وارد میشود... . میگم اگر بخوایم بدون openGl این مشکل رو حل کنیم تکلیف چیه و این که مگه تابع bitmap.recycle(); همین کارو انجام نمی ده ممنون از شما استاد عزیز
Mr7 11 سال پیش
یا میشه با اضافه کردن کد های کتابخانه openGl توی پروژه فقط تو قسمت های سنگین این مشکل رو حل کرد البته من درک خاصی از openGl ندارم ولی....... .
konect 12 سال پیش

سلام دوست

به نظر من این بحث مربوط به نحوه نگهداری داده ها در حافظه های heap و stack میشه.

نظرات


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .