RxJava-তে Observer হলো একটি ইন্টারফেস, যা Observable-এর সাথে কাজ করে। এটি ডেটা স্ট্রিম পর্যবেক্ষণ করে এবং স্ট্রিম থেকে প্রাপ্ত ডেটা বা ইভেন্টগুলোতে প্রতিক্রিয়া জানায়।
Observer-এর ভূমিকা:
- ডেটা স্ট্রিম পর্যবেক্ষণ:
Observer Observable-এর তৈরি ডেটা স্ট্রিম পর্যবেক্ষণ করে এবং নতুন ডেটা বা ইভেন্ট প্রাপ্ত হলে তা গ্রহণ করে। - ইভেন্ট হ্যান্ডলিং:
Observer তিন ধরনের ইভেন্ট পরিচালনা করতে পারে:- onNext(): যখন নতুন ডেটা আসে।
- onError(): যখন কোনো ত্রুটি ঘটে।
- onComplete(): যখন ডেটা স্ট্রিম সম্পূর্ণ হয়।
- রেসপন্স তৈরি:
ডেটা বা ইভেন্টের উপর ভিত্তি করে Observer একটি নির্দিষ্ট অ্যাকশন বা রেসপন্স সম্পাদন করে।
Observer কাজের প্রক্রিয়া:
- Subscription:
Observer একটি Observable-এর সাথে সংযুক্ত হয় (Subscribe করে), এবং এর ডেটা স্ট্রিম বা ইভেন্টগুলো পর্যবেক্ষণ শুরু করে। - ইভেন্ট প্রাপ্তি:
Observable থেকে ডেটা বা ইভেন্ট আসার সাথে সাথে Observer প্রাসঙ্গিক ইভেন্ট মেথড (onNext,onError, বাonComplete) কল করে। - অ্যাকশন সম্পাদন:
প্রতিটি ইভেন্টে নির্ধারিত অ্যাকশন বা অপারেশন সম্পাদিত হয়।
উদাহরণ: Observer-এর কাজ
import io.reactivex.Observable;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
public class ObserverExample {
public static void main(String[] args) {
// Observable তৈরি
Observable<String> observable = Observable.just("Hello", "RxJava", "World");
// Observer তৈরি
Observer<String> observer = new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
System.out.println("Subscribed to Observable");
}
@Override
public void onNext(String s) {
System.out.println("Received: " + s);
}
@Override
public void onError(Throwable e) {
System.err.println("Error occurred: " + e.getMessage());
}
@Override
public void onComplete() {
System.out.println("All data received. Completed!");
}
};
// Observable-এ Observer যুক্ত করা
observable.subscribe(observer);
}
}
আউটপুট:
Subscribed to Observable
Received: Hello
Received: RxJava
Received: World
All data received. Completed!
মেথডসমূহের বিস্তারিত:
- onSubscribe(Disposable d):
- Observable-এর সাথে Observer যুক্ত হলে প্রথমে এটি কল হয়।
- এখানে আপনি Subscription ম্যানেজ করতে পারেন (যদি প্রয়োজন হয় Subscription বন্ধ করা)।
- onNext(T t):
- Observable থেকে ডেটা প্রাপ্ত হলে এটি কল হয়।
- প্রত্যেকটি ডেটার জন্য আলাদা করে
onNextকল হয়।
- onError(Throwable e):
- Observable-এ কোনো ত্রুটি ঘটলে এটি কল হয়।
- একবার
onErrorকল হলে, আর কোনো ডেটা বা ইভেন্ট পাঠানো হয় না।
- onComplete():
- Observable থেকে সমস্ত ডেটা পাঠানোর পরে এটি কল হয়।
onCompleteকল হলে, এটি নিশ্চিত করে যে ডেটা স্ট্রিম শেষ হয়েছে।
Observer এবং Observable-এর ইন্টারঅ্যাকশন:
- Observable ডেটা ইমিট (emit) করে।
- Observer সেই ডেটা গ্রহণ করে এবং নির্ধারিত ইভেন্ট হ্যান্ডলারে সাড়া দেয়।
- Subscription-এর মাধ্যমে এই সম্পর্কটি সক্রিয় থাকে।
RxJava-তে Observer গুরুত্বপূর্ণ কারণ এটি অ্যাসিঙ্ক্রোনাস ইভেন্ট ড্রাইভেন প্রোগ্রামিং সহজ করে তোলে।
Content added By
Read more