Android'de RxJava Kullanımı


Görsel Referansı


Merhabalar. Bu yazıda, elimden geldiğince RxJava kullanımını ve detaylarını örneklerle açıklamaya çalışacağım, umarım faydalı olur. İyi okumalar.

ReactiveX geliştiricilerinin RxJava için eklediği açıklama: Bu modül, RxJava'yı Android uygulamalarında reaktif bileşenler yazmayı kolay ve sorunsuz hale getiren minimum sınıfları ekliyor. Daha spesifik olarak, ana iş parçacığı veya verilen herhangi bir looper üzerinde zamanlama yapan bir zamanlayıcı sağlıyor.

Aslında reaktif programlama bu kütüphane için şöyle açıklanabilir: Bir data var ve biz bu datayla etkileşime geçiyoruz, böylelikle datanın bütün olaylarına sahip olmuş oluyoruz. Bu olaylar datanın kendisi ve dönebilecek hatalar oluyor.


 

Temel Kavramlar


- Observable: Datanın yayılma eylemini yapacak olan sınıf.

- Observer: Yayılma durumundaki datayı dinleme ve dahil olma işlemini yapıyor.

- Subscribe: Observable ve observer arasındaki bağlantıyı kuruyor.

- Operators: İhtiyacımıza göre farklı durumlar doğabilir. Bunlar için de oldukça fazla ve kullanışlı operatörler bulunuyor (örneğin; map, filter ve concat).

- Schedulers: İşlem tipine göre çalışma ortamının belirlendiği kısım. Seçilirken dikkat edilmesi kısımlar detaylı verilmiştir. - IO: Network işlemleri ve ufak dosya işlemleri için kullanılması öneriliyor. Bu zamanlayıcıların sistem yavaşlamalarına veya OutOfMemoryError’a neden olabilecek sınırsız sayıda çalışan iş parçacığı oluşturabileceğini unutmamalıyız. Bellekten silinmeleri gerekmektedir.

- Computation: İşlemci gücüne ihtiyaç duyulduğu zamanlarda kullanılması öneriliyor. IO schedulers'a oldukça benziyor fakat farkı sınırsız sayıda değil de cihazın çekirdek sayısına göre belirleniyor. Örnek olarak cihaz 2 çekirdekli ise havuzda 2 iş parçacığı olacaktır.Ayrıca, bu iki iş parçacığı meşgulse, işlemin bunların kullanılabilir olmasını beklemesi gerektiği anlamına gelir.

- Trampoline: Birden fazla observable olduğunda ve bunların sırayla yürütülmesini istediğimizde, trambolin programlayıcıları işe yarıyor.

- NewThread: Zaman alıcı işlemi ana iş parçacığından (main thread) diğer iş parçacığına (new thread) aktarmak için kullanılabilir. Bu zamanlayıcıların sistem yavaşlamalarına veya OutOfMemoryError’a neden olabilecek sınırsız sayıda çalışan iş parçacığı oluşturabileceğini unutmamalıyız. Bellekten silinmeleri gerekmektedir.