چه زمانی از rx استفاده کنیم و چه زمانی از livedata
حل شده توسط
پوریا شفیعی
سلام خسته نباشید
من یک سوالی داشتم که اگر ما از live data استفاده بکنیم اون وقت rx java دیگر به چه دردی میخورد؟! live data تمام کاراهای ترد را مثل rx انجام میدهد
ممنون
سلام وقت بخیر
کاری که livedata میکنه ‘تا حدودی" شبیه کار rxjava ست.
livedata به چرخه حیات اگاه هست به همین دلیل میتونه تشخیص بده چه زمانی واکنش انجام شود این برخلاف rx هست که باید برای ازاد سازی مموری از Disposable استفاده کنیم.
همینطور در livedata نیازی نیست مثل rxjava اطلاع بدیم که دیتا تغییر کرده چرا که خودش این قضایا رو متوجه میشه و دیتا رو تغییر میده.
اما تماما بسته به شرایطمون داره که چه زمانی از rx استفاده کنیم و چه زمانی از livedata که در پروژه نایکی این مفاهیم هم توضیح داده شده .
بریم سراغ مقایسه ها:
توی لایو دیتای ما خیلی از اپراتورهای rx رو نداریم
ما توی لایو دیتا عملیات رو توی MainThread انجام میدهیم درصورتی که توی rx میتونیم مشخص کنیم عملیات توی background انجام شود.(اشاره به جلسات rx)
توی livedata برای انجام یک تسک باید صبر کنیم تسک قبلی تموم بشه که بهش میگن synchronous .(این مفهوم در جلسات کوروتین تدریس شده )
از تمام این نکات و مفاهیم متوجه میشیم که بستگی به کاری داره که میخواهیم انجام بدیم که در کجا چی رو استفاده کنیم
مثلا زمانی که بخواهید state رو نگه دارید به عنوان مثال در پروژه student کاربر میاد و روی دکمه اضافه کردن دانشجویان کلیک میکنه و وارد صفحه دیگری میشه ما در اینجا نیاز داریم برای صفحه لیست دانشجویان از livedata استفاده کنیم ولی هنگام اضافه کردن یک دانشجو چون نیاز نیست state رو نگه داریم از rx استفاده میکنیم.
همینطور در زیر هم لینکهایی قرار میدم امیدوارم براتون مفید باشن: