علیرضا احمدی

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

Live Data

کتابخانه Live Data یکی از کتابخانه‌های اصلی و قدرتمند در محیط توسعه اندروید است که برای پیاده‌سازی الگوی معماری مشاهده-اعلان (Observer-Pattern) در برنامه‌های اندروید استفاده می‌شود. Live Data معماری زنجیره‌ای (Reactive) را به برنامه‌های اندروید اضافه می‌کند و در ترکیب با معماری جت‌پک (Jetpack)، ارتباط بین کامپوننت‌های مختلف برنامه را ساده‌تر خواهد کرد.

//Live Data
def lifecycle_version = "2.6.1"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"

معماری مشاهده-اعلان (Observer-Pattern)

LiveData به برنامه‌نویسان امکان می‌دهد که داده‌ها را در قالب یک جریان (Stream) مشترک بین متغیرها و کلاس‌ها در برنامه خود منتشر کنند. بدین ترتیب، هرگاه داده‌ها تغییر کنند، تمام مشترکین به‌طور خودکار آن را دریافت و به‌روزرسانی می‌کنند.

این الگوی مشاهده-اعلان (Observer-Pattern) به برنامه‌ها امکان می‌دهد تا به‌روزرسانی‌های بین مولفه‌ها (مانند فرگمنت‌ها، اکتیویتی‌ها و سرویس‌ها) را بدون نیاز به استفاده از روش‌های پیچیده (مانند مدیریت دستی مشترکین) انجام دهند.

مزایای استفاده از Live Data 

  1. راحتی و سهولت استفاده: Live Data در اصل به‌صورت خودکار به تغییرات داده‌ها واکنش نشان می‌دهد و مشترکین را به‌روزرسانی می‌کند. این ویژگی باعث می‌شود کد برنامه ساده‌تر، خوانا‌تر و انعطاف‌پذیرتر باشد.

  2. هماهنگی با چرخه زندگی مولفه‌ها: LiveData با دقت به چرخه زندگی مولفه‌ها در اندروید توجه می‌کند. به عنوان مثال، وقتی یک مولفه مانند فرگمنت یا اکتیویتی در حالت غیر فعال قرار می‌گیرد، Live Data به طور خودکار از به‌روزرسانی داده‌ها خودداری می‌کند. به این ترتیب، نیازی به نگرانی درباره حفظ همگامی داده‌ها با چرخه زندگی مولفه‌ها نیست و به صورت پیش‌فرض بهینه‌سازی شده است.

  3. امکان به‌روزرسانی واسط کاربری (UI): LiveData به صورت مستقیم با واسط کاربری در ارتباط است و می‌تواند به‌روزرسانی‌های مربوط به داده‌ها را بلافاصله به UI اعمال کند. این باعث می‌شود که برنامه‌ها بدون نیاز به دستیابی مستقیم به منابع داده‌ای و بهره‌برداری از مدیریت موضوعات (thread management)، واکنش‌پذیر و قابلیت انعطاف بیشتری داشته باشند.

  4. امکان استفاده همزمان با معماری جت‌پک: LiveData با سایر کتابخانه‌های معماری جت‌پک مانند ViewModel و Room سازگار است و به خوبی با آنها همکاری می‌کند. این امکان را فراهم می‌کند تا بتوانید برنامه‌هایی با ساختار معماری قوی و قابل توسعه بسازید.

Live Data

کاربرد LiveData در رتروفیت و دیتابیس Room

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

برای مدیریت ترد ها در اندروید از کاتلین کوروتین استفاده میکنیم تا جلوی قفل شدن Main Thread را بگیریم. اما در استفاده از کوروتین نیازمند پترن Observer خواهیم بود. پس برای پیاده سازی این پترن، از کتابخانه Live Data استفاده میکنیم. این کتابخانه علاوه بر داشتن پترن Observer، چرخه حیات را نیز برای ما مدیریت خواهد کرد.

Kotlin Coroutines

Kotlin Coroutines یک کتابخانه برنامه‌نویسی همروندی در زبان برنامه‌نویسی Kotlin است که امکان برنامه‌نویسی همروند را با استفاده از الگوی ساختاری ساده‌تری فراهم می‌کند. این کتابخانه امکان اجرای عملیات‌های همروند را در زمینه‌های مختلف مانند I/O بدون بلاک کردن نخ اصلی برنامه فراهم می‌کند.

LiveData و Kotlin Coroutines می‌توانند با هم ترکیب شوند تا بهبود‌هایی در کارایی و عملکرد برنامه‌ها ایجاد کنند. به طور معمول، LiveData از کوروتین‌ها به عنوان یک منبع نخ ترکیبی استفاده می‌کند تا به‌روزرسانی‌هایی که نیاز به عملیات همروند دارند را انجام دهد.

با استفاده از کوروتین‌ها، می‌توانید تسک‌های مستقل را در پشت صحنه اجرا کنید و با LiveData به‌روزرسانی‌ها را در UI اعمال کنید. به عنوان مثال، می‌توانید در یک ViewModel از کوروتین‌ها برای انجام عملیات همروندی مانند دریافت داده‌ها از منبع خارجی استفاده کنید و سپس با استفاده از LiveData به‌روزرسانی‌های لازم را به UI ارسال کنید.

برنامه نویسی همروند چیست؟

برنامه‌نویسی همروند به معنای نوشتن برنامه‌هایی است که بتوانند فعالیت‌های همزمان و موازی را اجرا کنند. در برنامه‌نویسی همروند، بخش‌های مختلف برنامه می‌توانند به صورت همزمان و در کنار هم اجرا شوند، به این ترتیب امکان اجرای چند وظیفه به صورت همزمان و بدون قفل شدن UI وجود دارد.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *