نمای تاریک Fragment ها
اکثر برنامه های اندروید شامل Fragment ها می شوند. این API توسط گوگل از اندروید 3 معرفی شد و در دسترس قرار گرفت. فرگمنت ها به ما کمک میکنند تا رابط کاربری ما قابل استفاده بر روی انواع گوشی ها و تبلت ها با معماری ها مختلف باشد. در این مقاله ما به بررسی جنبه های تاریک و منفی این API می پردازیم.
چرا از Fragment ها استفاده می کنیم؟
ابتدا به این پرسش پاسخ دهیم که دلیل استفاده از Fragment ها چیست؟ بسیاری به این سوال اینگونه پاسخ میدهند که یک کتابخانه اندروید است و بقیه نیز استفاده می کنند. حال اگر سوالهای دیگر مطرح شود مانند Fragment ها چه مشکلی را حل می کنند؟ چطور کمک می کنند تا کد ها تمیز تر باشند؟ و ….
برای جواب این سوالها با کمی جستجو می توان به موارد زیر رسید:
- مرتب سازی و طراحی رابط کاربری پیچیده
- متدهای چرخه حیات Fragment ها
- شخصی سازی Toolbar
- Backstack navigation
- Transactional UI updates
- حفظ وضعیت
جوابهای بالا منطقی و علمی هستند اما دلایل دیگری وجود دارند که ما را مجاب می کنند تا به دنبال راه حل نیز بگردیم.
دلایل عدم استفاده از Fragment ها
مانند دیگر پدیده ها در جهان، فرگمنت ها نیز نیمه روشن و تاریک دارند. حال ببینیم که دلایل عدم استفاده از این پدیده چیست:
Backstack navigation در نوع خود کارآمد است اما به طور غیرلازمی، پیچیده می باشد. زمانی که استک دچار اختلال می شود، کارها کمی پیچیده می شوند که شامل screen rotation نیز می شود. اما این مشکل با قرار دادن Fragment در وسط استک حل پایان می یابد در حالی که باید در بالای استک قرار بگیرد. 0____0
به روزرسانی های کتابخانه Support گاهی اوقات باعث می شوند که Fragment به طور معقول رفتار نکند و گاهی اوقات بر خلاف انتظارات رفتار کند به خصوص زمانی که شما یک رابط کاربری پیچیده همراه با Fragment های تو در تو دارید.
مدیریت وضعیت Fragment نیز تا حدی غیرقابل درک می باشد. برای به چالش کشیدن FragmentMangerImpl که نزدیک به 2000 خط کد بود که طبیعتا درک آن بسیار سخت است اگر نگهداری سخت آن را فراموش کنیم، می توان گفت باگها همیشه در کمین هستند.
راه حل ها
تقریبا هر کدام از مشکلها در استفاده از Fragment یک راه حل با استفاده از custom view ها دارد.
View ها در اندروید از ساختار درخت مانند پیروی می کنند که از این ساختار می توانید به نفع خودتان استفاده کنید. با روشی که می توانید منطق و رفتارهای شخصی سازی شده را در Fragment ها به کار ببرید، همانند آن را می توانید با ارث بری از هر نوع کلاس ViewGroup نیز پیاده سازی کنید.
بحث متدهای چرخه حیات(LifeCycle) یکی از موارد چالش برانگیز حتی برای برنامه نویسان اندروید حرفه ایی نیز می باشد. زمانی که از View های شخصی سازی شده به جای Fragment ها استفاده می کنید، در واقع می توانید به راحتی چرخه حیات event ها را از activity ها به Viewهای شخصی سازی شده منتقل کنید.
مبحث حفظ موقعیت نیز می تواند با متدهای کلاس View مانند View.onSaveInstanceState() و View.onRestoreInstanceState() کنترل شود. همچنین می توانید برای کنترل بهتر زمانی که configuration تغییر می کند از کتابخانه IcePick نیز استفاده کنید.
به عنوان برنامه نویس حتما باید کتابخانه هایی را که از آن ها استفاده می کنیم را مورد مطالعه و بررسی قرار دهیم و کم و کیف آنان را بسنجیم. تنها به این دلیل که گوگل فلان کتابخانه را نوشته و دیگران از آن استفاده می کنند گواه بر خوب و بی نقص بودن آن نیست و حتما باید مطالعه و بررسی بشود.
مطالب زیر را حتما مطالعه کنید
حسگرها و فناوریهای پوشیدنی و کاربردهای آنها در پزشکی
نکاتی که باید پیش از دانلود نمودار ER بدانید
۵ راه کسب درآمد از برنامه نویسی
پایگاه داده (Data Base) چیست؟
برنامه نویسی چیست؟
آموزش برنامهنویسی | برنامهنویسی چیست و چگونه میتوان آنرا فراگرفت؟
2 Comments
Join the discussion and tell us your opinion.
دیدگاهتان را بنویسید لغو پاسخ
برای نوشتن دیدگاه باید وارد بشوید.
متشکرم. مفید بود.
بسیارعالی که برای شما مفید واقع شد.