Disposable এর মাধ্যমে Subscription পরিচালনা করা

ubscription এবং Disposable - আরএক্সজাভা (RxJava) - Java Technologies

265

RxJava-তে Disposable হলো একটি ইন্টারফেস, যা Subscription পরিচালনা করতে সাহায্য করে। যখন একটি Observable এবং Observer-এর মধ্যে subscription হয়, তখন এটি asynchronous স্ট্রিম চালাতে শুরু করে। কোনো নির্দিষ্ট সময়ে subscription বন্ধ করার প্রয়োজন হতে পারে, যাতে memory leaks এড়ানো যায়। এই কাজটি Disposable-এর মাধ্যমে করা হয়।


Disposable-এর ভূমিকা:

  1. Subscription বন্ধ করা:
    Subscription চালু থাকা অবস্থায় যখন আর প্রয়োজন নেই, তখন dispose() মেথডের মাধ্যমে subscription বন্ধ করা যায়।
  2. Memory Leak এড়ানো:
    দীর্ঘ সময় ধরে subscription চালু থাকলে memory leak হতে পারে। Disposable ব্যবহার করে এ ধরনের সমস্যা এড়ানো যায়।
  3. Lifecycle Management:
    Subscription বন্ধ করা lifecycle-এর একটি গুরুত্বপূর্ণ অংশ, বিশেষ করে Android অ্যাপ্লিকেশনে যেখানে Activity বা Fragment destroy হওয়ার সঙ্গে subscription বন্ধ করতে হয়।

Disposable-এর ব্যবহার:

সাধারণ উদাহরণ:

import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.disposables.Disposable;

public class DisposableExample {
    public static void main(String[] args) {
        // Observable তৈরি করা
        Observable<String> observable = Observable.just("Item 1", "Item 2", "Item 3");
        
        // Subscription এবং Disposable গ্রহণ করা
        Disposable disposable = observable.subscribe(
            item -> System.out.println("Received: " + item),  // onNext
            error -> System.err.println("Error: " + error),   // onError
            () -> System.out.println("Complete!")            // onComplete
        );

        // Subscription বন্ধ করা
        disposable.dispose();

        System.out.println("Is disposed: " + disposable.isDisposed());
    }
}

বর্ণনা:

  • subscribe() মেথডের রিটার্ন টাইপ হলো Disposable
  • dispose() মেথডটি ডাকা হলে subscription বন্ধ হয়ে যায়।

CompositeDisposable:

একটি অ্যাপ্লিকেশনে অনেক Disposable থাকতে পারে। একাধিক subscription একসঙ্গে পরিচালনা করতে CompositeDisposable ব্যবহার করা হয়। এটি Disposable-এর একটি সংগ্রহ।

CompositeDisposable উদাহরণ:

import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.disposables.CompositeDisposable;
import io.reactivex.rxjava3.disposables.Disposable;

public class CompositeDisposableExample {
    public static void main(String[] args) {
        CompositeDisposable compositeDisposable = new CompositeDisposable();

        Observable<String> observable1 = Observable.just("Observable 1");
        Observable<String> observable2 = Observable.just("Observable 2");

        // প্রথম Disposable যোগ করা
        Disposable disposable1 = observable1.subscribe(
            item -> System.out.println("Received from observable1: " + item)
        );

        // দ্বিতীয় Disposable যোগ করা
        Disposable disposable2 = observable2.subscribe(
            item -> System.out.println("Received from observable2: " + item)
        );

        // CompositeDisposable-এ Disposable যোগ করা
        compositeDisposable.add(disposable1);
        compositeDisposable.add(disposable2);

        // সব Disposable বন্ধ করা
        compositeDisposable.dispose();

        System.out.println("Are all disposed: " + compositeDisposable.isDisposed());
    }
}

বর্ণনা:

  • CompositeDisposable-এ একাধিক Disposable যোগ করা যায়।
  • একবার dispose() কল করলে সব Disposable বন্ধ হয়ে যায়।

Android অ্যাপ্লিকেশনে Disposable-এর ব্যবহার:

Android অ্যাপে Activity বা Fragment destroy হওয়ার সময় subscription বন্ধ করা গুরুত্বপূর্ণ। Disposable এই কাজটি lifecycle-aware পদ্ধতিতে করতে সাহায্য করে।

Android উদাহরণ:

public class MainActivity extends AppCompatActivity {
    private CompositeDisposable compositeDisposable = new CompositeDisposable();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Observable<String> observable = Observable.just("Hello", "RxJava");

        // Subscription তৈরি এবং CompositeDisposable-এ যোগ করা
        Disposable disposable = observable
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(item -> Log.d("RxJava", "Received: " + item));

        compositeDisposable.add(disposable);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();

        // সমস্ত Disposable বন্ধ করা
        compositeDisposable.clear();
    }
}

বর্ণনা:

  • onCreate()-এ subscription শুরু হয় এবং onDestroy()-এ subscription বন্ধ হয়।
  • compositeDisposable.clear() ডাকা হলে সব Disposable বন্ধ হয়ে যায়।

Disposable ব্যবহারের সুবিধাসমূহ:

  1. Memory Management: দীর্ঘ সময় ধরে চলা subscription-এর কারণে memory leak হওয়া প্রতিরোধ করে।
  2. Lifecycle Management: Activity বা Fragment destroy হওয়ার সময় subscription বন্ধ করা সহজ হয়।
  3. Concurrency Control: একাধিক subscription সহজে পরিচালনা করা যায়।
  4. Readable Code: Disposable কোডের জটিলতা কমিয়ে পড়া এবং রক্ষণাবেক্ষণ সহজ করে।

RxJava-তে Disposable একটি গুরুত্বপূর্ণ উপাদান, বিশেষ করে asynchronous stream ব্যবস্থাপনার জন্য। এটি কোডকে আরও দক্ষ এবং পরিষ্কার করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...