کلاس های Helper و نحوه استفاده از آن
سلام خدمت همه دوستان عزیز و اساتید چند تا سوال داشتم به نظرم اومد اگه همش توی یه تایپیک باشه بهتر هستش برای همین همرو همینجا نوشتم .
سوال اولم اینه که کلاس های Helper چه کلاس هایی هستند ؟
سوال دوم این که آیا متدهایی که درون کلاس Helper هستند باید static باشند؟ (منظورم اینه که طبق قوانین OOP و این که کد بهتری داشته باشیم استفاده از static بهتر هست یا ساختن یک instance از هر کلاس و دسترسی به توابع داخل اون).
سوال سوم این که آیا استفاده زیاد از متغیرها و متدها به طور static باعث کند شدن و یا پایین اومدن performance میشه ؟ چون چند جا مطلبی در مورد حافظه ها خونده بودم و طبق صحبت هایی که با چند برنامه نویس داشتم بهم گفتند که بهتره زیاد از static استفاده نکنم .
و سوال آخر هم این که توی ورژن 2.2.2 اندروید استویدو وقتی که کلاس G رو میسازیم و درون اون context رو به صورت static تعریف میکنیم این warning به ما داده میشه که فکر میکنم بی ربط به سوال سومم نباشه. میخواستم بدونم این ارور برای چیه و راه حل صحیح برای حل این مشکل چیه.
Do not place android context classes in static fields; this is a memory leak (and also breaks Instant Run)
more : a static field will leak contexts
ببخشید اگه سوال هام زیاد شد d: ممنون از دوستان و اساتیدی که پاسخ میدن.
با سلام
جواب اول : در اصل یک نوع تکنیکه بنظر من , یه کار کلی هست یکبار برای همیشه (نه لزوما) و اینکه برای سادگی و جلوگیری از پیچیدگی میان بعضی کارهارو در قالب کلاس انجام میدن (اصل شی گرایی هم همینو میگه) مثل دیتابیس و فایل و غیره
جواب دوم : شما یکبار دیگه مبحث شی گرایی رو مرور کنید , استاتیک یعنی برای هر کلاس یک بار ایجاد میشه ولی نمونه سازی برای هر شی یک بار فضا میگیره ...
سوال سوم : منطق میگه نه (جواب کلی در اخر) ... ببینید هر کلاسی هم برای خودش حافظه میگیره و متغییرهای استاتیکش رو اونجا ذخیره میکنه ولی هر نمونه یک فضای جدا میگیره پس طبیعتا نباید از نظر کارایی برنامه مشکلی بوجود بیاد چرا که کلاس حافظه داره و دسترسی به اون فرقی با بقیه نداره ... پس ربطی به کارایی نداره
و سوال اخر: نکته تمام حرفهای بالا رو اینجا میگم که فرق اصلی متغییر استاتیک با غیر استاتیک اینکه که مثلا شی شما اگر از بین بره GarbageCollector اون رو پیدا کرده پاک میکنه ولی متغییر استاتیک هیچوقت پاک نمیشه!!! چون کلاس یک بار برای همیشه لود میشه! واسه همین پیشنهاد میده استفاده نکنی چون نشت حافظه بوجود میاد
موفق باشید
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .