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

استاتیک کردن کلاس اپلیکیشن (G) و نشت حافظه

مدیریت گفتگو
احمد 8 سال پیش
آخرین تغییر: 8 سال پیش

استفاده از کلاس اپلیکیشن (G) استاتیک باعث نشت حافظه می شود آیا راه حلی برای این موضوع پیشنهاد میکنید.ممنون 

نظرات

پاسخ‌ها 1

سجاد عباسی 8 سال پیش

دلیلی برای نگرانی در این مورد نیست اندروید استودیو برای هر کانتکس استاتیک این وارنینگ رو میده که در مورد کانتکست اپلیکیشن جای نگرانی نیست چون یکی هست و در تمام مدت برنامه همون میمونه و باعث leak نمیشه.  اما اگر context های دیگه ای مثل acitivty رو استاتیک کنید ممکنه مشکل پیش بیاد.

 

نظرات

Reza 8 سال پیش
سلام ، اینکه گفتین "کانتکست اپلیکیشن یکی هست و در تمام مدت برنامه همون میمونه" ، مگه متغیرهای استاتیک دیگه ، تعدادشون به مرور زیاد میشه ؟ مثلا یه اکتیویتی باز میشه که دارای یک فیلد استاتیک هست . حالا اکتیویتی رو finish میکنیم ( که طبیعتا این متغیر استاتیک در حافظه باقی میمونه ) . دوباره که اکتیویتی باز میشه ، یعنی یک فیلد استاتیک دیگه غیر از قبلی به وجود میاد ؟ یا همون قبلی دوباره مقدار دهی میشه ؟
سجاد عباسی 8 سال پیش
سلام همون قبلی میمونه و مقدار جدید نمیگیره این جایی مشکل ایجاد میکنه که توی اکتیویتی متغیر استاتیک از کانتکست اکتیویتی باشه و اکتیویتی finish بشه اینجوری تو اون متغیر static هست ولی دوباره همون اکتیویتی هم درست میشه اینجوری دو تا اکتیویتی تو حافظه هست و باعث leak میشه. ولی در مورد context application این مشکل پیش نمیاد.
Reza 8 سال پیش
ممنون . کانتکست اکتیویتی منظورم نیست . منظورم متغیرهای استاتیک از انواع دیگه است . مثلا int یا double یا ArrayList . اینا چی ؟ اینا هم اگه اکتیویتی بسته بشه و دوباره باز بشه ، یکی دیگه درست میشه یا همون قبلی مقدار جدید میگیره ؟
سجاد عباسی 8 سال پیش
همون مقدار قبلی باقی میمونه تا وقتی برنامه تو حافظه هست متغیر های استاتیک باقی میمونن و وقتی برنامه به طور کامل بسته بشه متغیر ها هم از بین میرن. این متغیر ها حافظه کمی اشغال میکنن و فقط کانتکست هست که ممکنه باعث لیک بشه.
Reza 8 سال پیش
ممنون ، پس مشکلی نیست . اول اینطور برداشت کردم که هر بار که اکتیویتی ها اجرا میشن ، متغیرهای استاتیکش دوباره یه فضای جدید اشغال میکنن و همینطور این فضای اشغال شده بیشتر میشه در رفت و آمدهای متوالی .
سجاد عباسی 8 سال پیش
نه فقط کانتکست های استاتیک غیر اپلیکیشن ممکنه باعث مشکل بشن.

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