از امروز با ری اکتیو برنامه اندروید بنویسید!

آذر 16, 1400
1 دقیقه خواندن

همه ما شاید کم و بیش با اصول برنامه نویسی ری اکتیو(ReactiveX) آشنایم یا حداقل دوست داشته باشیم در این مورد اطلاعاتی بدست بیاوریم. منابع زیادی در مورد شروع با RxJava و RxAndroid نوشته شده است اما مشکل است که همه چیز را بتوان در یک جا داشت. این سلسله مباحث، اصول مهم کامپوننت های مختلف RxJava و RxAndroid و همچنین مثال هایی از اینکه چگونه آنها به توسعه اندروید می انجامد، بازگو می کند.

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

برنامه نویسی ری اکتیو حول گردش داده ها و انتشار تغییرات قرار گرفته است یعنی درباره تغییرات مقدار بحث می کند. برای مثال وقتی x= y+z را تعریف می کنیم؛ اگر مقدار y یا z را تغییر دهیم، مقدار x هم خودکار تغییر می کند. این تغییر بوسیله مشاهده مقادیر y و z انجام می شود.

افزونه های ری اکتیو

افزونه های ری اکتیو (Reactive Extensions) کتابخانه ای است که اصول برنامه نویسی ری اکتیو را برای نوشتن برنامه های ناهمزمان(asynchronous) و رویداد محور بوسیله توالی قابل مشاهده فراهم می کند.

RxJava پیاده سازی جاوا از برنامه نویسی ری اکتیو است.

RxAndroid مخصوص پلتفرم اندروید است که از برخی کلاس های RxJava استفاده می کند.

اصول RxJava:

بلوک های ساختمانی RxJava :

Observable : کلاسی که استریم داده یا رویدادها را منتشر می کند یعنی کلاس می تواند بعضی عمل ها را اجرا کند و نتیجه را چاپ می کند.

 Observable observable = new Observable.just("a","b","c","d") 

Observer : کلاسی که رویدادها یا داده ها و عمل ها را دریافت می کند یعنی کلاسی که منتظر Observable می ماند و به نتایج Observable واکنش نشان می دهد.

Observer چهار تابع اینترفیس (Interface Methods) برای دانستن حالات مختلف دارد:

()onSubscribe: این تابع هنگامی استناد می شود که Observer به Observable مربوط شده باشد.

()onNext: این تابع زمانی فراخوانی می شود که آیتم جدید از Observable منتشر شود.

()onError: این تابع زمانی فراخونی می شود که خطایی رخ داده باشد و انتشار داده ها با موفقیت پیان نیافته باشد.

()onComplete: این تابع زمانی فراخوانی می شود که observable با موفقیت همه آیتم ها را کامل کرده باشد.

new Observer() {
            @Override
            public void onSubscribe(Disposable d) {
                System.out.println("onSubscribe");
            }

            @Override
            public void onNext(Object o) {
                System.out.println("onNext: " + o);
            }

            @Override
            public void onError(Throwable e) {
                System.out.println("onError: " + e.getMessage());
            }

            @Override
            public void onComplete() {
                System.out.println("onComplete");
            }
        };

در نوشته بعدی به عملگرهای RxJava خواهیم پرداخت. اگر تا اینجا از مقاله راضی بودید حتما در ادامه نیز این مطلب را دنبال کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.