مقدمه| همه چیز درباره اندروید جت پک
در این مقاله قصد داریم شما را با صفر تا صد اندروید جت پک آشنا کنیم، تا هم اطلاعات شما در این زمینه بیشتر شود و هم اینکه در صورت تمایل برای استفاده از اندروید جت پک بتوانید آشنایی کاملی با آن داشته باشید. در ابتدا برای آموختن همه چیز درباره اندروید جت پک باید با چیستی آن آشنا شویم.
اندروید جت پک (Android Jetpack) مجموعهای از مؤلفهها، ابزارها و راهنماییها برای ساخت برنامههای عالی اندرویدی است. اجزای اندروید جت پک کتابخانه پشتیبانی موجود و مؤلفههای معماری را گرد هم آورده و آنها را به چهار دسته مرتب میکند، اجزای Android Jetpack به عنوان کتابخانههای “بدون بسته” ارائه میشوند که جزئی از سیستم عامل اصلی اندروید نیستند. این بدان معنی است که شما میتوانید هر یک از مؤلفهها را با سرعت خود، در زمان خودتان به کار بگیرید. وقتی قابلیت جدید اندروید جت پک در دسترس است، میتوانید آن را به برنامه خود اضافه کنید، برنامه خود را در فروشگاه Play مستقر کنید و ویژگیهای جدید همه را در یک روز (در صورت سریع بودن) به کاربران ارائه دهید.
علاوه بر این، برنامه شما میتواند بر روی نسخههای مختلف این سیستم عامل اجرا شود، زیرا اجزای اندروید جت پک ساخته شدهاند، تا عملکرد خود را مستقل از هر نسخه خاص ارائه دهند و پیرامون شیوههای طراحی مدرن مانند جداسازی نگرانیها و قابلیت آزمایش بودن و همچنین ویژگیهای بهره وری مانند ادغام Kotlin ساخته شده است. این امر ساختن برنامههای با کیفیت و با کیفیت بالا و کد کمتری را برای شما ساده تر میکند. در حالی که اجزای Android Jetpack برای همکاری با یکدیگر ساخته شدهاند اما لازم نیست از همه آنها استفاده کنید .
اندروید جت پک و کاربردهای آن چیست؟
در بخش ابتدایی همه چیز درباره اندروید جت پک میخواهیم توضیح کوتاهی دربارهی چیستی این نرم افزار بدهیم، در واقع جت پک همانطور که از نامش پیداست در زبان فارسی به معنای بسته سریع السیراست. افرادی که قبلاً با اندروید استودیو کار کردهاند شاهد این قضیه بودهاند که برخی مواقع محیط اندروید استودیو هنگام خروجی گرفتن از برنامه چقدر میتوانست کلافه کننده باشد و خطاهای متنوع و عجیبی را نمایش دهد؛ اما به مدد تکنولوژی جت پک مقدار زیادی از این مورد کاسته شد و در حال حاضر برنامه نویسان میتوانند اپلیکیشنهای خود را به سادگی و سریع گسترش دهند.
این کتابخانه پشتیبانی به این دلیل به وجود آمد تا بتوان امکانات جدید اندروید استودیو را در نسخههای قدیمیتر هم استفاده کرد ولی ازآنجاییکه با هر بهروزرسانی اندروید استودیو نام این کتابخانهها نیز تغییر مییافت، برنامه نویس فلکزده باید فهرستی را حفظ میکرد که فلان امکانات در کدام نسخه از کتابخانه پشتیبانی وجود دارد. از مشکلات دیگر این بود که شخصی که اپلیکیشن تولید میکرد میبایست خروجی برنامه را با نرمافزار شبیه ساز گوشی تکبهتک چک میکرد تا از صحت اجرای برنامه در اکثر گوشیها اطمینان حاصل کند!
در واقع Android Jetpack مجموعهای از اجزای نرم افزار Android است، که به ما در ساخت برنامهای عالی Android کمک می کند. مولفه های نرم افزار به موارد زیر کمک میکنند:
پیش از این چالشهای بسیاری وجود داشت که به شرح زیر است:
تمام این مشکلات عمده توسط اجزای نرم افزار Android Jetpack برطرف شده است.
بنابراین، راه حل برای همه این مشکلات استفاده از Andriod Jetpack است. یکی دیگر از مهمترین موارد در مورد Jetpack این است، که به دفعات نسبت به سیستم عامل Android به روز میشود تا همیشه آخرین نسخه را دریافت کنیم.
باید گفت Jetpack شامل کتابخانههای بسته androidx است، که از APIهای پلت فرم جدا نشده است. این بدان معنی است که سازگاری به عقب را ارائه میدهد.
اجزای اصلی Jetpack android
در این بخش از مقالهی همه چیز درباره اندروید جت پک قصد داریم، شما را با اجزای اصلی این نرم افزار به طور مختصر آشنا کنیم. مولفه های Android Jetpack مجموعهای از کتابخانهها هستند، که به طور جداگانه قابل استفاده هستند و در کنار یکدیگر بهره میگیرند، ضمن اینکه از ویژگیهای زبان کوتلین بهره مند میشوند که باعث بهره وری بیشتر ما میشود.
این مولفههای نرم افزاری در 4 دسته تنظیم شدهاند که به شرح زیر است:
حال بیایید با تک تک این مولفهها به صورت جداگانه آشنا شویم:
مولفههای بنیادی اندروید جت پک (Foundation Components)
در این قسمت از همه چیز درباره اندروید جت پک هدف توضیح مولفههای رفتاری این نرم افزار است. مولفههای بنیادی اندروید جت پک به شرح زیر است:
تمام مولفههای بنیادی (Foundation Components) به شرح زیر است:
1. برنامه Compat: با پشتیبانی از پیاده سازی رابط کاربری طراحی مواد، نسخههای قدیمی Android را با کم لطفی تخریب کنید.
1. مجموعه Android KTX: مجموعهای از برنامههای افزودنی کوتلین برای نوشتن کد کوتلین مختصر و اصیل.
2. ویژگی Multidex: پشتیبانی از چندین فایل dex را برای برنامهها فراهم کنید.
3. ویژگی Test: چارچوبی برای آزمایش واحد و زمان اجرای UI در Android.
مولفههای معماری اندروید جت پک (Architecture Components )
در این بخش از مقاله همه چیز درباره اندروید جت پک، هدف آشنایی شما با دومین جز این نرم افزار یعنی مولفههای معماری اندروید جت پک است.
یکی از مهمترین مسائل در رابطه با برنامه نویسی توسعه پذیر بودن، خوانایی کد و تست پذیری میباشد. این بخش تمام تمرکزش روی همین مسائل هست و با استفاده از Android Architecture Component میتوانید به خاصیت هایی که یک نرم افزار با کیفیت لازم است داشته باشد برسید.
معماری پیشنهادی گوگل MVVM که Android Architecture Component به شما کمک میکند، آن را به سادگی پیاده سازی کنید. به طور خلاصه MVVM نرم افزار را به ۳ لایه تقسیم میکنید. View, ViewModel, Model. لایه مدل وظیفهاش تامین اطلاعات است مثلا گرفتن اطلاعات از سرور یا دیتابیس، لایه View تنها وظیفه اش نمایش اطلاعات است و ViewModel رابط بین لایه Model و View
مولفههای معماری جت پک به ما در ساخت برنامههای زیر به ما کمک میکنند:
تمام اجزای معماری به شرح زیر است:
اتصال داده ( Data Binding) : به طور واضح عناصر UI را در طرح ما به منابع داده برنامه ما متصل میکند.
چرخههای زندگی (Life cycles) : فعالیتها و چرخههای حیات برنامه ما را مدیریت میکند.
توضیح LiveData
در این بخش از مقاله همه چیز درباره اندروید جت پک به سراغ قسمت دیگری از این نرم افزار میرویم. به شما کمک میکند که از هرگونه تغییر در پایگاه داده به نمایش نماها بپردازید. به طور ساده LiveData یک ظرف نگه دارنده اطلاع (Data Holder) میباشد. بستههای اطلاعاتی که بین View و ViewModel جابه جا میشود میتوانند از نوع LiveData باشند. اما چه مزیتی دارد؟ در ادامه خواهیم دید.
در اندروید لایه View چه Fragment باشد چه Activity چرخه حیاتی مخصوص به خود دارد. این چرخه حیات بسیار حائز اهمیت است از این بابت که درخواست و دریافت اطلاعات از Model کاملا به چرخه حیات View وابسته است. مثلا زمانی لیست یادداشتهای باید دریافت شود که طبیعتا Fragment درحال نمایش باشد و زمانی که Fragment بسته شده باشد دیگر نیازی به دریافت نیست. یکی از مزیتهای اصطلاحا Lifecycle Aware بودن آن است. به این معنی که لازم نیست شما نگران چرخه حیات View باشید، LiveData هوشمندانه آن را مدیریت میکند
پیمایش (Navigation) : به وسیلهی این بخش میتوانید همه موارد لازم برای پیمایش درون برنامه را کنترل کنید، در واقع از Navigation Component برای ارتباط و کنترل Navigation اپلیکیشن بین فرگمنتها استفاده میشود. مثلاً با این ابزار میتوانید فرگمنتها را بهصورت بصری به هم وصل کنید و تعیین کنید از هر فرگمنتی به کجا میتوان رفت و حتی آرگومانهایی که هر فرگمنت لازم دارد را مشخص کنید.ان
صفحه بندی (Paging) : به تدریج اطلاعات مربوط به تقاضای منبع داده خود را بارگیری کنید. در خیلی از اپلیکیشنها مشاهده کردید که مثلا وقتی میخواهند لیست اخبار را نمایش دهند، ۲۰ خبر ابتدا گرفته میشود و زمانی که کاربر به انتهای لیست رسید دوباره ۲۰ خبر بعدی گرفته میشود، دلیل این موضوع افزایش سرعت اجرای دستورات، صرفه جویی در رم و حجم دیتای کاربر میباشد. اصطلاحا به این روش Lazy Loading یا Infinite Scroll میگویند. برای پیاده سازی این سناریو از این بعد میتوانید از لایبرری Paging استفاده کنید. مهمترین مزیت استفاده از Paging سادگی و ساپورت کردن RecyclerView
اتاق (Room) : دسترسی به پایگاه داده Fluent SQLite.
ویژگی ViewModel: دادههای مربوط به UI را به روشی آگاه از چرخه زندگی مدیریت کنید. وظیفه ViewModel ارتباط بین لایه View (مثلا Fragment شما) و لایه Model (مثلا دیتابیس شما) میباشد. فرض کنید میخواهید لیست یادداشت هایی را از دیتابیس دریافت کنید. در این شرایط نباید مستقیما از Fragment به دیتابیس درخواست بفرستید. بلکه شما هر رویدادی که برای Fragment تان اتفاق میافتد را فقط به ViewModel اطلاع میدهید و ViewModel تصمیم میگیرد که چه زمانی باید اطلاعات را از دیتابیس بگیرد. مثلا وقتی متد فرگمنت صدا زده شد به ViewModel اطلاع داده میشود و ViewModel لیست یادداشتها را از دیتابیس درخواست میکند و نتیجه را به Fragment اعلام میکنید. اما چطور اطلاعات را به Fragment اطلاع بدهد. پاسخ این سوال LiveData هست.
ابزار WorkManager: با توجه به شرایطی که انتخاب میکنیم، همه مشاغل پس زمینه را در Android مدیریت کنید. این ابزار برای زمان بندی انجام کارهای زمان بر کاربرد دارد. مثلا با WorkManager میتوانید تعیین کنید که هر ۱۲ ساعت یک بار اطلاعات دیتابیس با سرور همگام سازی شوند.
یکی از مشکلات بزرگی که در اندروید وجود داشت نبود سیستمی یکپارچه و دقیق برای زمان بندی کارهای خاص بود. ابزارهای مختلفی مثل Alarm Service یا Job scheduler وجود داشتند ولی مثلا Alarm Service دقیق نبود و فقط تا ورژن ۱۹ اندروید کار میکرد و از طرف دیگر Job Scheduler روی ورژنهای پایینتر کار نمیکرد. اما با Work Manager دیگر چنین نگرانی وجود ندارد و تضمین میشود که درصورتی که شرایط انجام کار شما فراهم باشد، سر تایم مشخص شده کارتان انجام شود.
یکی از موارد جالب در مورد WorkManager این است که مثلا میتوانید مشخص کنید هر ۱۲ ساعت و زمانی که کاربر به اینترنت متصل بود ولی با گوشیش کار نمیکرد، کار خاصی را انجام دهد. خب این موضوع میتواند در موارد بسیاری کمک کننده باشد مثلا برای گرفتن پشتیبان از عکسهای گرفته شده و ارسال آنها به سرور.
اجزای رفتاری android Jetpak (Behavior Components )
در این بخش از مقاله اندروید جت پک میخواهیم با مولفههای رفتاری این نرم افزار آشنا شویم. مولفههای رفتاری به یکپارچه سازی با سرویسهای استاندارد Android مانند کمک میکنند:
تمام اجزای رفتاری اندروید جت پک به شرح زیر است:
1. مدیر بارگیری (Download Manager) : با پشتیبانی مجدد خودکار، بارگیریهای بزرگ را در پس زمینه برنامه ریزی و مدیریت کنید.
2. رسانه و پخش (Media & Playback ) : APIهای سازگار با حالت روبرو برای پخش و مسیریابی رسانه (از جمله Google Cast).
3. اعلانها (Notifications): یک API اعلان سازگار با عقب با پشتیبانی Wear و Auto ارائه میدهد.
4. مجوزها (permissions): API های سازگاری برای بررسی و درخواست مجوزها در برنامه.
5. تنظیمات برگزیده (Preferences): صفحههای تنظیمات تعاملی را برای پیکربندی کاربران ایجاد کنید.
6. اقدام Sharing: یک اقدام اشتراک گذاری مناسب برای نوار اقدام یک برنامه ارائه می دهد.
7. برشها (Slices): عناصر UI انعطاف پذیر ایجاد کنید، که بتواند دادههای برنامه را در خارج از برنامه نمایش دهد و تا Android 4.4 قابل گسترش است.
مولفههای (UI (android UI Components
حال که میخواهید همه چیز درباره اندروید جت پک بدانید باید با مولفههای UI نیز آشنا شوید. مولفههای رابط کاربر ابزارکها و راهنماهایی را در اختیار شما قرار می دهد، تا استفاده از برنامه شما نه تنها آسان، بلکه لذت بخش باشد.
تمام اجزای UI اندروید جت پک به شرح زیر است:
آموزش های برنامه نویسی موبایل با اندروید به صورت دوره مقدماتی، پیشرفته و پروژه محور را میتوانید با مراجعه به لینک زیر دریافت کنین: