استفاده از دیتابیس ROOM با LiveData در اندروید Jetpack

در این مقاله سعی بر توضیح دیتابیس ROOM با Live Data استLive data یک مشاهدکننده نگه دارانده داده است یا همان (Data Holder) بخشی از اندروید جت پک استLivedata یک نوع مشاهده کننده از کلاس DataHolder است. برخلاف مشاهده کننده عادی live Data یک چرخه زندگی داره آگاهی داردیه این معنی است که به بقیه چرخه های زندگی برنامه را خراب نمیکند اجزایی مانند Activity ها Fragment ها یا سرویس ها (که هر کدام چرخه زندگی دارند)این آگاهی اطمینان میدهد Livedata فقط بر اجزای برنامه که مشاهده میکند که داخل چرخه هستند را بروز رسانی میکندبه عنوان یک مشاهده کننده که مشخص میکند توسط کلاس observer ("مشاهده کننده"),که در حالت فعال اگر چرخه زندگی به عنوان حالت STATED یا RESUME باشدLiveData فقط مشاهده های فعال در مورد بروز رسانی را اطلاع میدهد. مشاهده های غیر فعال که ثبت شده در Live Data در مورد تغیر آنها اطلاعی نمیدهدچرا استفاده از LiveData؟اطمینان میدهد که UI مرتبط شده با حالت داده (dataState)LiveData از الگوی مشاهده گر پیروی می کند. LiveData هنگام تغییر وضعیت چرخه زندگی ، ناظر (مشاهده کننده ) را مطلع می کند. می توانید کد خود را برای به روزرسانی رابط کاربری در این اشیا Observer یکی کنید. به جای به روزرسانی رابط کاربری هر بار که داده های برنامه تغییر می کند ، ناظر شما می تواند هر زمان تغییراتی در رابط کاربر را به روز کند.هیچ نشت حافظه ای نیستناظران به چرخه حیات اشیا چسبیده هستند و وقتی حافظه را پاک میکنند که چرخه حیاتشان خراب شده باشدبدون توقف ناگهانی که ناشی از Activity باشداگر چرخه حیات ناظر غیر فعال باشد ، مانند فعالیت(Activity) در پشت پشته ، هیچ رویداد LiveData دریافت نمی کند.دیگر چرخه حیات دستی خبری نیستاجزای UI فقط ناظر داده های مربوط است که نه توقف یا ادامه مشاهده کننده رو میده. LiveData به طور خودکار همه اینها را مدیریت می کند ، زیرا هنگام مشاهده از تغییرات وضعیت مربوط به چرخه زندگی آگاه است.همیشه داده بروزرسانی استاگر چرخه زندگی غیرفعال شود ، با فعال شدن مجدد آخرین داده ها را دریافت می کند. به عنوان مثال ، فعالیتی که در پس زمینه بود ، آخرین داده ها را بلافاصله پس از بازگشت به پیش زمینه دریافت می کند.پیکر بندی مناسب از تغیراتاگر یک فعالیت(Activity) یا قطعه ای(fragment) به دلیل تغییر تنظیمات مانند چرخش دستگاه دوباره ایجاد شود ، بلافاصله آخرین داده های موجود را دریافت می کند.اشتراک منابعمی توانید یک شی LiveData را با استفاده از الگوی singleton گسترش دهید تا خدمات سیستم را بپیچید تا بتوانند در برنامه شما به اشتراک گذاشته شوند. شی LiveData یک بار به سرویس سیستم متصل می شود و سپس هر مشاهده کننده ای که به منبع نیاز دارد فقط می تواند شی LiveData را مشاهده کند. برای اطلاعات بیشتر ، به توسعه LiveData مراجعه کنید.MoreLiveDataپیاده سازی ROOM1.فایل build.gradle را برای پروژه خود باز کنید (نه موارد مربوط به برنامه یا ماژول) و ()Google repository را مانند تصویر زیر اضافه کنید:2. فایل build.gradle را برای برنامه یا ماژول خود باز کرده و وابستگی ها(Dependencies) را اضافه کنید:مرحله 2: LiveData را اضافه کنیدما وقتی می خواهیم یک خروجی را مشاهده کنیم از LiveData استفاده می کنیم ، بنابراین باید داده های دریافتی را با LiveData بپیچیمبیایید ببینیم چگونه این کار را انجام می دهیماول از همه ، ما باید شناسایی کنیم که می خواهیم ناظر را در کجا قرار دهیم. در مسئله ما ، داده های بازیابی شده از پایگاه داده را مشاهده خواهیم کرد.قبل از اضافه کردن LiveData ، می توانیم ببینیم که فقط لیست افراد را از پایگاه داده بازیابی می کنیم.وقتی LiveData را اضافه می کنیم فقط باید با LiveData بسته بندی کنیم تا بتوانیم یک ناظر را بگذاریماکنون ما دریافت میکنیم شیِ <<LiveData<List<Person به جای <List<Personو اکنون میبینیم که خطا که جایی که صدا زده شده از ()LoadAllpersonsدریافت شده از متد DAOمتد ()loadAllpersons اکنون در حال بازگرداندن LiveData Objects از DAO است.به جای این کار ?این کار را خواهید کرداکنون ما یک مشاهده گر را به ()loadAllpersons متصل کرده ایم تا بتوانیم تغییرات موجود در پایگاه داده را مشاهده کنیم.این ناظر فقط در صورت تغییر در پایگاه داده مشاهده خواهد کرد.اکنون نگران نباشید از کجا می خواهید این را فراخوانی کنید زیرا این فقط درصورت ایجاد هر نوع تغییر در پایگاه داده فراخوانی می شود.با تشکر از خواننده گرامی برای خواندن این مقاله Source