Android Jetpack چیست؟ معرفی جت پک در اندروید

دسته بندی: جاوا
سطح مقاله: متوسط
زمان مطالعه: 9 دقیقه
۰۳ آذر ۱۳۹۸

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 قرار دارد. همین نام گذاری عجیب که دلیل آن ساختار پیچیده بود باعث می شد خیلی از برنامه نویسان از ادامه مسیر دل زده شوند.

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

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

بخش معماری (Architecture) در جت پک

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

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

برنامه نویسی اندروید

آشنایی با View-Model

وظیفه View-Model ارتباط بین لایه View (مثلا Fragment شما) و لایه Model (مثلا دیتابیس) می باشد. فرض کنید می خواهید لیست یادداشت هایی را از دیتابیس دریافت کنید. در این شرایط نباید مستقیما از Fragment به دیتابیس درخواست بفرستید بلکه شما هر رویدادی که برای Fragment تان اتفاق می افتد را فقط به View-Model اطلاع می دهید و View-Model تصمیم می گیرد که چه زمانی باید اطلاعات را از دیتابیس بگیرد.

مثلا وقتی متد onStart فرگمنت صدا زده شد به View-Model اطلاع داده می شود و View-Model لیست یادداشت ها را از دیتابیس درخواست می کند و نتیجه را به Fragment اعلام می کند. اطلاعات را توسط LiveData به Fragment اطلاع می‌دهد.

 LiveData چیست؟

به طور ساده LiveData یک ظرف نگه دارنده داده‌ها (Data Holder) می باشد. بسته های اطلاعاتی که بین View و View-Model جابه جا می شود می توانند از نوع LiveData باشند. در اندروید لایه View چه Fragment باشد چه Activity چرخه حیاتی مخصوص به خود دارد. این چرخه حیات بسیار حائز اهمیت است از این بابت که درخواست و دریافت اطلاعات از Model کاملا به چرخه حیات View وابسته است.

مثلا زمانی لیست یادداشت ها باید دریافت شود که طبیعتا Fragment درحال نمایش باشد و زمانی که Fragment بسته شده باشد دیگر نیازی به دریافت نیست. می‌توان گفت یکی از مزیت های  LiveData اصطلاحا Lifecycle Aware بودن آن است. به این معنی که لازم نیست شما نگران چرخه حیات View باشید، LiveData هوشمندانه آن را مدیریت می کند.

WorkManager چیست؟

این ابزار برای زمان بندی انجام کارها کاربرد دارد. مثلا با WorkManager می توانید تعیین کنید که هر ۱۲ ساعت یک بار اطلاعات دیتابیس با سرور همگام سازی شوند. یکی از مشکلات بزرگی که در اندروید وجود داشت نبود سیستمی یکپارچه و دقیق برای زمان بندی کارهای خاص بود.

ابزارهای مختلفی مثل Alarm Service یا Job scheduler وجود داشتند ولی مثلا Alarm Service دقیق نبود و فقط تا ورژن ۱۹ اندروید کار می کرد و از طرف دیگر Job Scheduler روی ورژن های پایین تر کار نمی کرد. اما با Work Manager دیگر این نگرانی وجود ندارد و تضمین می شود درصورتی که شرایط فراهم باشد، در زمان مشخص شده کار انجام شود.

یکی از موارد جالب در مورد WorkManager این است که مثلا می توانید مشخص کنید هر ۱۲ ساعت و زمانی که کاربر به اینترنت متصل است اما کاری با موبایل خود انجام نمی دهد، عملیات مشخصی انجام شود.  این موضوع می تواند در موارد بسیاری مانند گرفتن پشتیبان از عکس های گرفته شده و ارسال آن ها به سرور کمک کننده باشد.

Paging چیست؟

احتمالا در خیلی از اپلیکیشن ها مشاهده کردید که مثلا وقتی می خواهند لیست اخبار را نمایش دهند، ۲۰ خبر ابتدا دیده می‌شود و زمانی که کاربر به انتهای لیست رسید دوباره ۲۰ خبر بعدی به روز می شود. دلیل این موضوع افزایش سرعت اجرای دستورات، صرفه جویی در حافظه RAM و حجم دیتای کاربر می باشد. اصطلاحا به این روش Lazy Loading یا Infinite Scroll می گویند. برای پیاده سازی این سناریو از این بعد می توانید از لایبرری Paging استفاده کنید. مهم ترین مزیت استفاده از Paging سادگی و پشتیبانی از RecyclerView می باشد.

Navigation چیست؟

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

jetpack در اندروید

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

جمع بندی

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

برنامه نویسی اندروید در سال های اخیر بازار کار بسیار خوبی داشته است و کسب درآمد از طریق برنامه نویسی اندروید توانسته متقاضیان یادگیری اندروید را افزایش دهد. برای آشنایی بیشتر با روش‌های یادگیری این حوزه از برنامه نویسی می توانید از این مقاله شروع کنید.

 

نویسنده

نظرات کاربران

mohammad

کاملا مفید مختصر

Soliman Ghoreyshee

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

وحید گروسی

بسیار عالی مطلب کامل و جامعی بود و از پرداختن به حاشیه ها دوری کرده بودین و صرفاً طول مقاله رو زیاد نکرده بودین

وحید گروسی

بسیار عالی خیلی عالی توضیح داده بودین ممنون از زحماتی که می کشید ❤❤❤

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

 
گزارش مشکل