جت پک [Android Jetpack] چیست؟ افرادی که میخواهند با محیط توسعه اندروید استودیو کار کنند بایستی علاوه بر دانش کد نویسی، با اصطلاحات و معماریهای این پلتفرم نیز آشنا شوند. اندروید استودیو جت پک در سال 2018 در مراسم گوگل IO معرفی گردید و همچنین از استقبال روزافزونی برخوردار شد.
کمپانی گوگل همچنین از مفهوم جدیدی به نام SingleActivity پرده برداشت و رسماً آن را جایگزین مناسبی برای روشهای گذشته مثلاً اپلیکیشنهای شامل چند اکتیویتی معرفی کرد.
هرچند قبل از گوگل، اینستاگرام از این مفهوم استفاده کرده بود و سالهاست که اپلیکیشن اینستاگرام از این روش استفاده کرده است؛ اما معنی اپلیکیشن SingleActivity چیست؟ همانطور که از نام آن پیداست به این معنی است که اپلیکیشن بایستی فقط یک اکتیویتی داشته باشد و تمامی صفحات موردنیاز با فرگمنت پیادهسازی شوند و این فرگمنتها داخل اکتیویتی بارگذاری «load» شوند.
جت پک اندروید
جت پک همانطور که از نامش پیداست در زبان فارسی به معنای بسته سریعالسیراست. افرادی که قبلاً با اندروید استودیو کارکردهاند شاهد این قضیه بودهاند که برخی مواقع محیط اندروید استودیو هنگام خروجی گرفتن از برنامه چقدر میتوانست کلافه کننده باشد و خطاهای متنوع و عجیبی را نمایش دهد؛ اما به مدد تکنولوژی جت پک مقدار زیادی از این مورد کاسته شد و در حال حاضر برنامه نویسان میتوانند اپلیکیشنهای خود را بهسادگی و سریع گسترش دهند.
در اینجا فرض بر این است که شما عزیزان قبلاً با محیط اندروید استودیو کارکردهاید و با برخی از مشکلات آن مواجه شدهاید. یکی از این مسائل که همواره با آن روبرو بویم، ساختار پیچیده و عجیبوغریب کتابخانه پشتیبانی اندروید «Android Support Library» بود.
شاید بپرسید این کتابخانه اصلاً چیست؟ این کتابخانه پشتیبانی به این دلیل به وجود آمد تا بتوان امکانات جدید اندروید استودیو را در نسخههای قدیمیتر هم استفاده کرد ولی ازآنجاییکه با هر بهروزرسانی اندروید استودیو نام این کتابخانهها نیز تغییر مییافت، برنامه نویس فلکزده باید فهرستی را حفظ میکرد که فلان امکانات در کدام نسخه از کتابخانه پشتیبانی وجود دارد.
از مشکلات دیگر این بود که شخصی که اپلیکیشن تولید میکرد میبایست خروجی برنامه را با نرمافزار شبیه ساز گوشی تکبهتک چک میکرد تا از صحت اجرای برنامه در اکثر گوشیها اطمینان حاصل کند!
بنده خودم شاهد این قضیه بودم که به دلیل همین مشکلات و بدتر از آن تحریم اندروید استودیو برای ایرانیان عزیز، خیلی از افراد از ادامه مسیر منصرف میگردیدند. البته شخصی اگر بخواهد به هدفی دست یابد، هیچچیز نمیتواند مانع او شود! حتی تحریمهای بینالمللی و یا مشکلات زیاد محیط برنامه نویسی.
اندروید جت پک خدمت بزرگی که انجام داد این بود که تمامی موارد فوق را مرتفع ساخت و یکپارچگی به وجود آورد و پیچیدهگیهای محیط برنامه نویسی را کم کرد.
حال که با دلیل به وجود آمدن جت پک آشنا شدید، میتوان ابن بسته سریعالسیر را به 4 دسته تقسیم نمود:
- معماری (Architecture)
- رابط کاربری (UI)
- رفتاری (Behavior)
- پایه (Foundation)
که در این مقاله در مورد مهمترین بخش آن یعنی Architecture صحبت خواهیم کرد.
معماری جت پک
از مسائل مهم در برنامه نویسی که افراد با آن درگیر هستند عبارتاند از:
• توسعهپذیر بودن
• خوانایی کد
• تست پذیری
برای ایجاد یک نرم افزار باکیفیت میتوانیم با Android Architecture Component به خواستهمان برسیم. معماری پیشنهادی کمپانی گوگل MVVM است. این واژه مخفف Model–view–viewmodel میباشد که با استفاده از Android Architecture Component قادر خواهیم بود در محیط اندروید استودیو از آن بهره ببریم.
مدل MVVM نرم افزار را به 3 لایه تقسیم میکند:
- Model
- ViewModel
- View
لایه مدل: وظیفهاش گرفتن اطلاعات از سرور و یا دیتابیس میباشد.
لایه ویو «View»: تنها وظیفهاش نمایش اطلاعات است.
لایه ViewModel: همانطور که از ترکیب دولایه است، کارش ارتباط بین لایه Model و لایه View میباشد.
در ادامه جا دارد که یکسری مسائل را توضیح دهیم چون در طول برنامه نویسی اندروید بهکرات با این واژگان برخورد خواهید کرد.
ViewModel
همانطور که پیشتر اشاره شد، وظیفه ViewModel ارتباط بین لایه View «برای مثال فرگمنت برنامه شما» و لایه Model «برای مثال دیتابیس برنامهتان» میباشد.
برای مثال میخواهیم یکسری نوشته را از دیتابیس «DataBase» دریافت کنیم، در چنین حالتی نباید بهطور مستقیم از Fragment به دیتابیس درخواست فرستاده شود بلکه شما هر رویدادی که برای Fragment برنامهتان اتفاق میافتد را بایستی فقط به ViewModel اطلاع دهید و این لایه ViewModel است که تصمیم میگیرد چه زمانی اطلاعات را از دیتابیس دریافت کند.
برای مثال زمانی که متد onStart مربوط به فرگمنت صدا زده شد به لایه ViewModel اطلاع داده میشود و ViewModel لیست یادداشتها را از دیتابیس درخواست میکند و نتیجه را به Fragment اعلام میکند؛ اما چطور میتواند اطلاعات را به Fragment اطلاع بدهد؟ پاسخ این سؤال LiveData هست.
LiveData
بهطور ساده LiveData یک ظرف نگهدارنده اطلاعات «Data Holder» میباشد. بستههای اطلاعاتی که بین View و ViewModel جابهجا میشود میتوانند از نوع LiveData باشند؛ اما چه مزیتی دارد؟ در ادامه خواهیم دید.
در اندروید لایه View چه Fragment باشد چه Activity چرخه حیاتی مخصوص به خود را دارد. این چرخه حیات بسیار حائز اهمیت است از این بابت که درخواست و دریافت اطلاعات از Model کاملاً به چرخه حیات View وابسته است.
برای مثال زمانی لیست یادداشتها باید دریافت شود که طبیعتاً Fragment در حال نمایش باشد و زمانی که Fragment بستهشده باشد دیگر نیازی به دریافت نیست. یکی از مزیتهای اصطلاحاً Lifecycle Aware بودن آن است. به این معنی که لازم نیست شما نگران چرخه حیات View باشید، LiveData هوشمندانه آن را مدیریت میکند.
WorkManager
این ابزار برای زمانبندی انجام کارهای زمانبر کاربرد دارد. مثلاً با WorkManager میتوانید تعیین کنید که هر ۱۲ ساعت یکبار اطلاعات دیتابیس با سرور همگامسازی شوند.
میتوان یکی از مشکلات بزرگی که در اندروید وجود داشت را، نبود سیستمی یکپارچه و دقیق برای زمانبندی کارهای خاص ذکر کرد. ابزارهای مختلفی مثل Alarm Service یا Job scheduler وجود داشتند ولی مثلاً Alarm Service دقیق نبود و فقط تا ورژن ۱۹ اندروید کار میکرد و از طرف دیگر Job Scheduler روی ورژنهای پایینتر کار نمیکرد.
اما با Work Manager دیگر چنین نگرانی وجود ندارد و تضمین میگردد که در صورت فراهم بودن شرایط انجام کار فراهم باشد، سر تایم مشخصشده کارتان انجام خواهد شد.
برای مثال یکی از موارد کاربردی و جالب در مورد WorkManager این است که مثلاً میتوانید مشخص کنید هر ۱۲ ساعت و زمانی که کاربر به اینترنت متصل بود ولی با گوشی خود کار نمیکرد، کار خاصی را انجام دهد. این موضوع میتواند در موارد بسیاری کمککننده باشد برای مثال بکآپ از عکسهای گرفتهشده و ارسال آنها به سرور.
Paging
شاید در برخی از اپلیکیشنها دیده باشید که فهرستی از موضوعات نمایش دادهشده است و برای مشاهده ادامه لیست بایستی آن را اسکرول کنیم و اپلیکیشن ادامه لیست را بارگذاری میکند. دلیل این موضوع افزایش سرعت اجرای دستورات، صرفهجویی در رم و حجم دیتای کاربر میباشد.
اصطلاحاً به این روش Lazy Loading یا Infinite Scroll گفته میشود. برای پیادهسازی این سناریو از این بعد میتوانید از کتابخانه Paging استفاده کنید. مهمترین مزیت استفاده از Paging سادگی و ساپورت کردن RecyclerView میباشد.
Navigation
از Navigation Component برای ارتباط و کنترل Navigation اپلیکیشن بین فرگمنتها استفاده میشود. مثلاً با این ابزار میتوانید فرگمنتها را بهصورت بصری به هم وصل کنید و تعیین کنید از هر فرگمنتی به کجا میتوان رفت و حتی آرگومانهایی که هر فرگمنت لازم دارد را مشخص کنید.
نتیجهگیری
میتوان اینطور گفت که Jetpack یکی از بزرگترین تحولاتی است که برنامه نویسی اندروید داشته است و این انقلابی در صنعت توسعه اپلیکیشین اندروید است. از مهمترین ویژگی جت پک این است که اجزای آنهم میتوانند بهخوبی باهم ارتباط برقرار کنند و بهدرستی کار کنند و به همین خاطر است که از واژه Component در آن استفادهشده است.
پیشنهاد ویژه: آموزش اندروید استودیو
جهت درج دیدگاه باید وارد حساب خود شوید
دیدگاه ها
هنوز هیچ دیدگاهی برای این مطلب ثبت نشده است