اندروید جت پک : Android Jetpack چیست؟



visibility  
mode_comment   ۱

در این مقاله خواهیم دید که Jetpack که به تازگی شرکت گوگل برای توسعه اپلیکیشن های اندرویدی ارائه کرده است شامل چه بخش ها و امکاناتی است. Jetpack در مراسم گوگل IO ۲۰۱۸ معرفی شد و از استقبال خوبی در میان مجمع برنامه نویسان اندروید برخوردار شده است و روز به روز در حال پیشرفت می باشد.

Jetpack چیست و چه کاربردی دارد؟

به طور خیلی ساده Jetpack راهکار جدیدیست برای  ساخت اپلیکیشن های اندرویدی اما ساده تر، بی دردسر تر، تست پذیر تر و توسعه پذیر تر.

یکی از مشکلاتی که همواره برنامه نویسان اندروید با آن مواجه بودند، ساختار پیچیده Android Support Library بود. این لایبرری در ابتدا به این دلیل وجود آمد که روشی برای سازگار کردن ورژن های قدیمی اندروید با امکانات جدید باشد. مثلا زبان طراحی متریال دیزاین در ورژن Lollipop اضافه شد که در ورژن های پایین تر قابل پیاده سازی نبود ولی Support Library این امکان رو به برنامه نویس می داد که در ورژن های قبل از Lollipop هم از متریال دیزاین استفاده کند. اما به عنوان مثال یکی از مشکلات ساختار Support Library نام گذاری های عجیب و غریب آن بود. مثلا Support Library v13, Support Library v7, Support Library v4!!! که برنامه نویس باید می دانست مثلا RecyclerView در Support Library v7 قرار دارد و Fragment در Support Library v4!!! خب همین نام گذاری عجیب که دلیل آن ساختار پیچیده بود باعث می شد خیلی از برنامه نویسان از ادامه مسیر دل زده شوند.

یکی دیگر از مشکلات اندروید این بود که به دلیل تنوع گوشی های اندروید هم از لحاظ سیستم عامل و هم از لحاظ امکانات، همیشه برنامه نویسان درگیر چالشی بزرگ برای کار کردن مطمئن و درست روی همه گوشی ها بودند. مثلا شما یک انیمیشن برای نمایش اکتیویتی خود مشخص می کردید اما روی هر گوشی کارکرد کاملا متفاوتی داشت. یکی دیگر از دلایل بوجود آمدن Jetpack به وجود آوردن یکپارچگی و کاستن از پیچیدگی های موضوع ذکر شده بود.

مجموعه Jetpack به چهار قسمت تقسیم می شود: معماری (Architecture)، رابط کاربری (UI)، رفتاری (Behavior)، پایه (Foundation) که در این مقاله در مورد مهمترین بخش آن یعنی Architecture صحبت خواهیم کرد.

معماری یا Architecture

یکی از مهمترین مسائل در رابطه با برنامه نویسی توسعه پذیر بودن، خوانایی کد و تست پذیری می باشد. این بخش تمام تمرکزش روی همین مسائل هست و با استفاده از Android Architecture Component می توانید به خاصیت هایی که یک نرم افزار با کیفیت لازم است داشته باشد برسید.

معماری پیشنهادی گوگل MVVM که Android Architecture Component به شما کمک می کند آن را به سادگی پیاده سازی کنید. به طور خلاصه MVVM نرم افزار را به ۳ لایه تقسیم می کنید. View, ViewModel, Model. لایه مدل وظیفه اش تامین اطلاعات است مثلا گرفتن اطلاعات از سرور یا  دیتابیس، لایه View تنها وظیفه اش نمایش اطلاعات است و ViewModel رابط بین لایه Model و View.

ViewModel

وظیفه ViewModel ارتباط بین لایه View (مثلا  Fragment شما) و لایه Model (مثلا دیتابیس شما) می باشد. فرض کنید می خواهید لیست یادداشت هایی را از دیتابیس دریافت کنید. در این شرایط نباید مستقیما از 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 اپلیکیشن بین فرگمنت ها استفاده می شود. مثلا با این ابزار می توانید فرگمنت ها را به صورت بصری به هم متصل کنید و تعیین کنید از هر فرگمنتی به کجا می توان رفت و حتی آرگومان هایی که هر فرگمنت لازم دارد را مشخص کنید.

در سال ۲۰۱۸ گوگل از مفهوم جدیدی به نام SingleActivity پرده برداشت و رسما آن را جایگزین مناسبی برای روش های گذشته مثلا اپلیکیشن های شامل چند اکتیویتی معرفی کرد. هر چند قبل از گوگل اینستاگرام از این مفهوم استفاده کرده بود و عملا اپلیکیشن اینستاگرام سال هاست که SingleActivity می باشد. اما معنی اپلیکیشن SingleActivity چیست؟ به این معنی است که اپلیکیشن باید فقط یک اکتیویتی داشته باشد و همه صفحات با فرگمنت پیاده سازی شوند و این فرگمنت ها داخل اکتیویتی Load شوند. اما مزیت این روش و دلیل انتخاب آن خود مقاله ای کامل برای توضیح لازم دارد.

جمع بندی

به نظرم Jetpack یکی از بزرگترین تحولاتی است که برنامه نویسی اندروید تاکنون به خود دیده و می توان این حرکت گوگل را انقلابی در صنعت توسعه اپلیکیشن های اندرویدی دانست. از مهمترین ویژگی های Jetpack این است که اجزای آن هم می توانند به خوبی باهم تعامل کنند و هم جدای ازهم به درستی کار کنند. به همین دلیل از واژه Component در آن استفاده شده است.

در دوره متخصص اندروید ۴ ( اردیبهشت ۹۸) مواردی که در این مقاله صحبت شد به طور کامل آموزش داده خواهند شد. برای اطلاعات بیشتر به صفحه اختصاصی دوره متخصص اندروید مراجعه فرمایید.

متخصص اندروید
اپ های اندروید خودت رو بساز و درآمد کسب کن برنامه نویسی اندروید الان خیلی پتانسیل کسب درآمد داره. اگر بتونید تو این زمینه متخصص شید، می تونید به راحتی از طریق مارکت ها، پروژه های فریلنسری و یا استخدام در شرکت های مطرح به درآمد عالی برسید. ما در دوره متخصص اندروید شما رو به یک برنامه نویس حرفه ای اپ های اندروید تبدیل می کنیم: متخصص اندروید arrow_back
7Learn Experts
comment دیدگاه کاربران
Soliman Ghoreyshee replyپاسخ

ممنون استاد گرامی , مختصر و مفید بود

add_circle ارسال دیدگاه

خوشحال میشیم دیدگاه و یا تجربیات خودتون رو با ما در میون بذارید :