۱۳ آذر ۹۶ ، ۱۴:۳۶
سجاد یوسف نیا ۰ نظر Share

عملگرهای برنامه نویسی واکنش گرا RXKava در اندروید (قسمت 1)


در آخرین مقاله از این سری ما RXJAVA  را معرفی کردیم ، یک کتابخانه ی واکنش گرا برای JVM که می تواند به شما کمک کند تا برنامه های اندرویدی ای بسازید که به داده ها و رویدادهایی که اتفاق می افتد واکنش نشان دهد. ولی شما همچنین می توانید از این کتابخانه به طور همزمان به رویدادها و داده ها واکنش نشان دهید.
در اینپست من قصد دارم که به شما نشان دهم که چگونه می توانید از عملگرهای RXJAVA استفاده کنید تا در نهایت یک تجربه از همروندی راحت و بی دردسر داشته باشید. در پایان این مقاله ، شما یاد خواهید داشت که چگونه از عملگرهای RXJAVA برای ساختن رشته های اضافی استفاده کنید، و کاری معین کنید که بایستی در ابن رشته ها اتفاق بیافتد و سپس این نتایج را به رشته ی اصلی که شامل UI است بفرستید آن هم تنها با چند خط کد.
و همچنین، چون هیچ فناوری ای کامل نیست، من همچنین قبل از اینکه چگونه کار کردن با عملگرها را به شما بگویم کمی در مورد دام های احتمالی اضافه کردن کتابخانه ی RXJAVA به پروژه تان با شما صحبت خواهم کرد برای اینکه مطمئن شویم هیچوقت مشکلی در پروژه ی اندرویدی شما پیش نمی آید.
معرفی عملگرها
RXJAVA مجموعه ی عطیمی از عملگرهایی دارد که عمدتا هدف از ایجاد آنها کمک به شما برای اصلاح ، فیلتر کردن، ترکیب و انتقال داده های منتشر شده به وسیله ی observableها است. شما لیست کامل عملگرهای  RXJAVA در این داکس رسمی می توانید پیدا کنید، و گرچه هیچ کس انتظار ندارد یکایک این عملگر ها را به خاطر بسپارید، ولی ارزش آن را دارد تا زمانی گذاشته و همه ی این لیست را بخوانید، بنابراین شما به یک نظر و جمع بندی کلی رسیده اید که چه تبدیل داده های مختلفی می توانید انجام دهید.
لیست عملگرهای RXJAVA قبل خیلی خسته کننده بود، ولی اگر شما نمی توانید عملگر کاملی را برای تبدیل داده های مورد نظرتان را بیابید، پس همیشه میتوانید از چندتا عملگر به صورت پشت سر هم و زنجیروار استفاده کنید. متصل کردن یک عملگر به observable نتیجه اش معمولا برگرداندن یک observable دیگر است، بنابراین شما می توانید به متصل کردن عملگرها ادامه دهید تا زمانی که نتیجه ی مورد نظرتان را بدست آورید.
تعداد بسیار زیادی عملگر RXJava برای پوشش در این مقاله وجود دارد ، و اسناد رسمی RXJava قبلا یک اقدام خوبی انجام داده برای معرفی عملگرهایی که که شما می توانید برای تبدیل داده ها استفاده کنید، پس من قصد دارم بر روی دو عملگر متمرکز شوم که بیشترین پتانسیل را برای آسان کردن کار شما در توسعه اندروید دارند: 
subscribeOn و observeOn
چند رشتگی با عملگرهای RXJava
اگر می خواهید که برنامه تان بهترین تجربه ی کاربری را به کاربر دهد، پس بایستی قادر به انجام وظایف طولانی مدت یا شدید باشد و چند کار را به طور همزمان بتواند انجام دهد، آن هم بدون بلوکه کردن رشته ی اصلی UI.
برای مثال ، تضور کنید برنامه تان احتیاج به واکشی اطلاعاتی از دو پایکاه داده ی متفاوت دارد. اگر شما هر دو کار را یکی پس از دیگری در رشته ی اصلی اندروید انجام دهید نه تنها زمان زیادی طول می کشد بلکه UI تا زمانی که بازگرداندن همه ی اطلاعات از هر دو پایگاه داده کامل نشود پاسخگو نخواهد بود. که این یک تجربه ی کاربری خوبی نخواهد بود!
یک راه به مراتب بهتر ساخت دو رشته ی اضافی است که هر دو وظیف را به طور همرمان انجام دهد و همچنین رشته ی UI را بلوکه نکند. این روش به این معنی است که هر دو کار به سرعت انجام خواهد شد و کاربر قادر خواهد بود تا بدون هیچ مشکلی کار کردن با UI را ادامه دهد. احتمالا کاربران شما از این نکته که برنامه در پس زمیه در حال انجام چه کارهای سنگین و طولانی مدتی است آگاه نخواهند بود و همه ی اطلاعات پایگاه داده به سادگی بر روی UI برنامه ظاهر خواهند شد، به نظر شما جالب نیست؟!
گذشته از این حرف ها ، اندروید چند ابزار ارائه می دهد که که می توانند برای ساخت رشته های اضافی مورد استفاده قرار بگیرند و شامل services و IntentServices هستند ولی پیاده سازی و اجرای این روش ها مشکل است و نتیجه  ی پیچیده ای ممکن است داشته باشند و همچنین کد طولانی ای داشته باشند، علاوه بر این  اگر چند رشتگی  به درستی پیاده سازی و اجرا نشود شما ممکن است که برنامه ای بوجود بیاورید که حافظه را به هدر می دهد و ارورهای مختلفی را بوجود بیاورد.
برای ساخت چندرشتگی بی دردسرتر در اندروید، رشته ی اصلی UI تنها رشته ای است که می تواند رابط کاربری برنامه را بروز رسانی کند. موقعی که شما می خواهید بر اساس کاری که در رشته ی دیگر صورت گرفته است، نتیجه اش را  به رشته ی UI ببرید و رشته ی UI را بروز رسانی کنید، معمولا احتیاج به ساخت یک Handler در رشته ی UI دارید، و سپس از Handler برای انتقال اطلاعات از رشته ی پس زمینه به رشته ی اصلی استفاده می کنید. این در نتیجه کد بیشتر ، پیچیدگی بیشتر و احتمال بوجود آمدن خطا در پروژه تان بیشتر می شود.
ولی دارای دو عملگری است که می توانند به شما جهت جلوگیری از پیچیدگی و خطا کمک کنند.
به یاد داشته باشید که این عملگرها با scheduler ها رتبطه داشته باشند ، چون schedular ها اجزای ضروری ای هستند که به شما این امکان را می دهند که رشته ها را تعیین کنید. ولی فعلا اینگونه تصور کنید که schedular هم معنی با کلمه ی رشته است.

نظرات (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی

تصاوير منتخب