Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

LocalBroadcastManager का उपयोग कैसे करें?

LocalBroadcastManager - ऐप-आंतरिक इवेंट बस

नोट: LocalBroadcastManager **डिप्रिकेट** है (AndroidX 1.1.0+ से)। आधुनिक ऐप्स को **LiveData/Flow**, **RxJava**, या **इवेंट बस लाइब्रेरी (greenrobot EventBus, Kotlin Channel/Flow)** का उपयोग करना चाहिए। यह लेख लीगेसी API को दस्तावेज करता है और माइग्रेशन पथ दिखाता है।

लीगेसी उपयोग (संदर्भ के लिए)

// पंजीकरण (उदाहरण: onStart/onResume में)
LocalBroadcastManager.getInstance(context)
        .registerReceiver(receiver, new IntentFilter("my-custom-action"));

// भेजना
Intent intent = new Intent("my-custom-action");
intent.putExtra("key", "value");
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);

// अनपंजीकरण (onStop/onPause में)
LocalBroadcastManager.getInstance(context).unregisterReceiver(receiver);

आधुनिक प्रतिस्थापन: LiveData (सिंगलटन इवेंट बस)

public class EventBus {
    private static final EventBus INSTANCE = new EventBus();
    private final MutableLiveData bus = new MutableLiveData<>();

    private EventBus() {}

    public static EventBus get() { return INSTANCE; }

    public void post(Event event) { bus.postValue(event); }

    public LiveData observe() { return bus; }

    public static class Event {
        public final String action;
        public final Bundle data;
        public Event(String action, Bundle data) { this.action = action; this.data = data; }
    }
}

उपयोग

// प्रेषक
EventBus.get().post(new EventBus.Event("user-login", bundleOf("uid" to userId)));

// प्राप्तकर्ता (फ्रैगमेंट/गतिविधि/व्यू मॉडल में)
EventBus.get().observe().observe(viewLifecycleOwner, event -> {
    if ("user-login".equals(event.action)) {
        String uid = event.data.getString("uid");
        // संभालें
    }
});

आधुनिक प्रतिस्थापन: Kotlin Channel / Flow (कोरआउटिन)

// साझा चैनल (सिंगलटन या DI के माध्यम से)
val eventChannel = Channel(Channel.UNLIMITED)

// प्रेषक (कोरआउटिन में)
eventChannel.send(Event("data-loaded", bundleOf("items" to list)))

// प्राप्तकर्ता (लॉन्च कोरआउटिन)
scope.launch {
    for (event in eventChannel) {
        when (event.action) { "data-loaded" -> updateUI(event.data) }
    }
}

तुलना

पहलूLocalBroadcastManagerLiveData EventBusChannel/Flow
थ्रेड सुरक्षाहांहां (मुख्य थ्रेड पोस्ट)हां
जीवनचक्र-जागरूकनहीं (मैन्युअल पंजीकरण)हां (observe लाइफसाइकिल)मैन्युअल स्कोप
स्टिकी इवेंट्सनहींहां (postValue अंतिम मान रखता है)नहीं (रीप्ले के लिए SharedFlow का उपयोग करें)
प्रकार सुरक्षानहीं (स्ट्रिंग एक्शन)हां (सील्ड क्लास/डेटा क्लास)हां
परीक्षणकठिनआसान (LiveData मॉक करें)आसान (टेस्ट स्कोप)

माइग्रेशन चेकलिस्ट

  1. सभी LocalBroadcastManager उपयोगों की पहचान करें।
  2. इवेंट प्रकार परिभाषित करें (सील्ड क्लास या डेटा क्लास)।
  3. LiveData-आधारित EventBus (सरल) या Channel/Flow (कोरआउटिन-हेवी ऐप्स) चुनें।
  4. प्रेषकों/प्राप्तकर्ताओं को रीफैक्टर करें।
  5. लीगेसी निर्भरता (androidx.localbroadcastmanager:localbroadcastmanager) हटाएं।

मूल उदाहरण की समीक्षा

मूल कोड एक गतिविधि में LocalBroadcastManager को पंजीकृत करता था, एक क्लिक पर प्रसारित करता था, और एक ही गतिविधि में प्राप्त करता था — एक राउंड-ट्रिप जो एक साधारण विधि कॉल या LiveData के साथ बेहतर होती है। यह पैटर्न वास्तविक डिकॉउपलिंग (घटक सीमाओं के पार) के लिए उपयोगी है, लेकिन आधुनिक विकल्पों को प्राथमिकता दी जाती है।

  1. एंड्रॉइड में ViewFlipper का उपयोग कैसे करें? एंड्रॉइड में ViewFlipper का उपयोग कैसे करें?

    एंड्रॉइड में ViewFlipper के साथ व्यू फ्लिपिंग एनिमेशन यह ट्यूटोरियल ViewFlipper का उपयोग करके व्यूज़ के बीच एनिमेटेड ट्रांजिशन बनाने का तरीका दिखाता है, जिसमें ऑटो-फ्लिपिंग और मैनुअल नेविगेशन शामिल है। लेआउट (activity_main.xml) <RelativeLayout xmlns:android=https://schemas.android.com/apk/res/an

  1. Android में Snackbar का उपयोग कैसे करें? Android में Snackbar का उपयोग कैसे करें?

    परिचय Snackbar Material Design का एक घटक है जो स्क्रीन के निचले भाग में एक संक्षिप्त संदेश दिखाता है। यह उदाहरण Snackbar के बुनियादी उपयोग और अनुकूलन को दर्शाता है। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में नया प्रोजेक्ट बनाएं। चरण 2: लेआउट XML res/layout/activity_main.xml: <?xml version=1.

  1. Android में NavigationView (नेविगेशन ड्रॉअर) कैसे उपयोग करें? Android में NavigationView (नेविगेशन ड्रॉअर) कैसे उपयोग करें?

    परिचय NavigationView मटेरियल डिज़ाइन का साइड नेविगेशन ड्रॉअर (हैमबर्गर मेनू) है। यह DrawerLayout के अंदर होता है और मेनू आइटम्स, हेडर, और नेविगेशन हैंडलिंग प्रदान करता है। यह ट्यूटोरियल Navigation Components के साथ आधुनिक सेटअप दिखाता है। आवश्यक चरण चरण 1: नया प्रोजेक्ट बनाएं Android Studio में Fi