লোকালব্রোডকাস্টম্যানেজার কীভাবে ব্যবহার করবেন?


452

গুগল ডক্স এবং পরিষেবা ব্রডকাস্ট ডকLocalBroadcastManager হিসাবে বর্ণিত হিসাবে কীভাবে ব্যবহার / সনাক্ত করতে পারি?

আমি এটি গুগল করার চেষ্টা করেছি, তবে শুরু করার জন্য কোনও কোড উপলব্ধ নেই?

দস্তাবেজগুলিতে বলা হয়েছে যে আমি আমার অ্যাপ্লিকেশন প্রসেসের সাথে অভ্যন্তরীণভাবে সম্প্রচার করতে চাইলে এটি ব্যবহার করা উচিত তবে এটি কোথায় সন্ধান করতে হবে তা আমি জানি না।

কোন সাহায্য / মন্তব্য?

আপডেট : আমি ব্রডকাস্টগুলি কীভাবে ব্যবহার করতে হয় তা জানি তবে কীভাবে LocalBroadcastManagerআমার প্রকল্পে পাওয়া যায় তা জানি না ।


ওয়াকাস, আপনি কি রিসিভারটি ম্যানিফেস্টে নিবন্ধভুক্ত করেছেন? যদি হ্যাঁ, দয়া করে আমাকে জানাবেন কিভাবে?
মুদাসসির

2
আমি মনে করি না আপনাকে প্রকাশিত ক্ষেত্রে এই জাতীয় সম্প্রচারের জন্য রিসিভার নিবন্ধন করতে হবে, কারণ আপনি যদি তা করেন তবে সেই রিসিভারটিও বিশ্ব সম্প্রচারের জন্য শুনবে listen
ওয়াকসলাম

2
সত্য। তারপরে এর অর্থ, নীচের উত্তরে প্রদত্ত কোডে আমাকে কোডটি করতে হবে; LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, new IntentFilter("custom-event-name"));
মুদাসসির

2
LocalBroadcastManagerঅবচয় করা হয়েছে। আমি আমার ইভেন্ট ইভেন্ট লাইব্রেরির সাথে প্রতিস্থাপন করেছি যা অনেক সুন্দর, ইমো।
ক্রিস বি

উত্তর:


861

আমি যাই হোক না কেন এটি উত্তর দিন। যদি কারও এটির প্রয়োজন হয়।

ReceiverActivity.java

একটি ক্রিয়াকলাপ যা ইভেন্টটির জন্য বিজ্ঞপ্তিগুলির জন্য নজর রাখে "custom-event-name"

@Override
public void onCreate(Bundle savedInstanceState) {

  ...

  // Register to receive messages.
  // We are registering an observer (mMessageReceiver) to receive Intents
  // with actions named "custom-event-name".
  LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
      new IntentFilter("custom-event-name"));
}

// Our handler for received Intents. This will be called whenever an Intent
// with an action named "custom-event-name" is broadcasted.
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
  @Override
  public void onReceive(Context context, Intent intent) {
    // Get extra data included in the Intent
    String message = intent.getStringExtra("message");
    Log.d("receiver", "Got message: " + message);
  }
};

@Override
protected void onDestroy() {
  // Unregister since the activity is about to be closed.
  LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver);
  super.onDestroy();
}

SenderActivity.java

দ্বিতীয় কার্যকলাপ যা বিজ্ঞপ্তিগুলি প্রেরণ / সম্প্রচার করে।

@Override
public void onCreate(Bundle savedInstanceState) {

  ...

  // Every time a button is clicked, we want to broadcast a notification.
  findViewById(R.id.button_send).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
      sendMessage();
    }
  });
}

// Send an Intent with an action named "custom-event-name". The Intent sent should 
// be received by the ReceiverActivity.
private void sendMessage() {
  Log.d("sender", "Broadcasting message");
  Intent intent = new Intent("custom-event-name");
  // You can also include some extra data.
  intent.putExtra("message", "This is my message!");
  LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
}

উপরের কোড, প্রত্যেক সময় বাটন সঙ্গে R.id.button_sendক্লিক করা হয়, একটি অভিপ্রায় সম্প্রচারিত হয় এবং দ্বারা গৃহীত হয়েছে mMessageReceiverযেReceiverActivity

ডিবাগ আউটপুটটি দেখতে এইরকম হওয়া উচিত:

01-16 10:35:42.413: D/sender(356): Broadcasting message
01-16 10:35:42.421: D/receiver(356): Got message: This is my message! 

7
ধন্যবাদ। এটি ইতিমধ্যে কাজ পেয়েছিলাম। তবে আমি যে সমস্যার মুখোমুখি হয়েছি তা হ'ল লোকালব্রডকাস্টম্যানেজার ক্লাস ধরে রাখা। যেহেতু এটির সমর্থন প্যাকেজ শ্রেণি, তাই আমি Android সরঞ্জামগুলি থেকে সামঞ্জস্যতা লাইব্রেরি যোগ না করা পর্যন্ত আমি এটি আমার সাধারণ প্যাকেজে ব্যবহার করতে সক্ষম হইনি able এটি যুক্ত হয়ে গেলে, সমস্ত ঠিক হয়ে গেল। যাইহোক, উত্তরের জন্য ধন্যবাদ
ওয়াকসলাম

195
দয়া করে নোট করুন যে কল onDestroy()করার নিশ্চয়তা নেই !!! আপনাকে অবশ্যই ব্যবহার করতে হবে onPause()(কারণ এটি কেবল onPause()গ্যারান্টিযুক্ত) এবং onResume()(কারণ এটি এর সাথে মিল onPause())
18446744073709551615

5
ভাবী, নোট করুন অনপস () এর পরে ক্রিয়াকলাপ সম্পর্কে গুগল ডক্স এখন যা বলেছে তা নোট করুন: কিলাবল = প্রাক-হনিকোমবি হনিকম্বের সাথে শুরু করে,
18446744073709551615

59
onDestroy()কোন সমস্যা হয় না। অ্যাপ্লিকেশনটি মারা গেলে যে ক্ষেত্রে এটি বলা হয় না তা হ'ল এবং আপনি যদি সেই ক্ষেত্রে নিবন্ধভুক্ত না হন তবে এটি বিবেচনা করে না যেহেতু নিবন্ধিত রিসিভারের তালিকাটিও বেঁচে নেই।
জ্যাপল

4
@ সেলভিন আমি আশা করি আপনি সচেতন যে আপনি ব্রডকাস্টারসিভারকে প্রাপ্ত ক্রিয়াকলাপের সাথে দুর্বলভাবে উল্লেখ করতে এবং এতিম হয়ে থাকলে নিজেই এটি নিবন্ধভুক্ত করতে পারবেন। আপনাকে এটিকে অনপস-এ নিবন্ধভুক্ত করার দরকার নেই, যতক্ষণ না আপনি আপনার ক্রিয়াকলাপ র‌্যামে রাখার জন্য ব্রডকাস্টার্সিভার ব্যবহার করবেন না ততক্ষণ অনটাস্ট্রয় ঠিক আছে। আপনার উদাহরণটি একটি অভ্যন্তরীণ শ্রেণীর সাথে এটির বাইরের শ্রেণীর ফাঁস হওয়া খারাপ অনুশীলন দেখায়, এটি ব্রডকাস্টরিসিভারের পক্ষে অনন্য নয় এবং এমন কিছু বিষয় যা প্রোগ্রামারদের সর্বদা রক্ষা করতে হবে। জিইউআই সংশোধন করার জন্য, যখন ক্রিয়াকলাপটি আবার শুরু হয় আপনি তার জন্য একটি স্টেট সংরক্ষণ করতে পারেন, আপনাকে জিইআইআই পরিবর্তন করতে হবে না।
জোহানশোগুন

132

আমি বরং উত্তর দিতে চাই।

  1. লোকালব্রডকাস্টম্যানেজার অ্যান্ড্রয়েড 3.0.০ এবং তারপরে এর মধ্যে অন্তর্ভুক্ত রয়েছে তাই আপনাকে প্রাথমিক প্রকাশের জন্য সাপোর্ট লাইব্রেরি v4 ব্যবহার করতে হবে। এখানে নির্দেশাবলী দেখুন

  2. একটি সম্প্রচার রিসিভার তৈরি করুন:

    private BroadcastReceiver onNotice= new BroadcastReceiver() {
    
        @Override
        public void onReceive(Context context, Intent intent) {
            // intent can contain anydata
            Log.d("sohail","onReceive called");
            tv.setText("Broadcast received !");
    
        }
    };
  3. আপনার রিসিভারটি অন ক্রিয়াকলাপ হিসাবে পুনরায় নিবন্ধ করুন:

    protected void onResume() {
            super.onResume();
    
            IntentFilter iff= new IntentFilter(MyIntentService.ACTION);
            LocalBroadcastManager.getInstance(this).registerReceiver(onNotice, iff);
        }
    
    //MyIntentService.ACTION is just a public static string defined in MyIntentService.
  4. অনপেজ এ রিসিভার নিবন্ধন করুন:

    protected void onPause() {
      super.onPause();
      LocalBroadcastManager.getInstance(this).unregisterReceiver(onNotice);
    }
  5. এখন যখনই অ্যাপ্লিকেশনগুলির ক্রিয়াকলাপ বা পরিষেবা থেকে লোকালব্রডকাস্ট প্রেরণ করা হবে, অননোটিক্সের রিসিভ কল করা হবে :)।

সম্পাদনা করুন: আপনি এখানে সম্পূর্ণ টিউটোরিয়ালটি পড়তে পারেন লোকালব্রডকাস্টম্যানেজার: অন্তর্ অ্যাপ্লিকেশন বার্তা প্রেরণ


15
+1 টি। যদি আপনার ব্রডকাস্ট রিসিভার কোনও খণ্ডে থাকে তবে এটি ব্যবহার করে নিবন্ধ করুন LocalBroadcastManager.getInstance(getActivity()).registerReceiver(onNotice);এবং এটি ব্যবহার করে নিবন্ধন করুনLocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(onNotice);
পিটএইচ

3
আপনি কি নিশ্চিত যে লোকালড্রোডকাস্টম্যানেজারটি অ্যান্ড্রয়েড 3.0.০ এবং তারপরে অন্তর্ভুক্ত রয়েছে? সমর্থন lib ব্যতীত এটি কোথাও খুঁজে পাচ্ছেন না
mente

5
আশ্চর্যের বিষয় হল, এলবিএম কেবল সমর্থন লাইব্রেরিতে অন্তর্ভুক্ত রয়েছে।
জেফ্রি ব্লাটম্যান

1
অনপেজ পদ্ধতিতে ওভাররাইট করার সময় সুপার.অনপস () সর্বশেষ বিবৃতি হওয়া উচিত। আনপ্রেডিকটেবল বাগ এড়াতে সুপার.অন এর আগে নিবন্ধন করুন
Thupten

2
আমি বিশ্বাস করি যে আপনি আপনার জীবনচক্রটি এড়াতে চাইতে পারেন onStopকারণ অ্যান্ড্রয়েড API 24+ এ "মাল্টি-উইন্ডো / স্প্লিট-ভিউ" (এপিআই 26+ এফাইকারে ডিফল্টরূপে সক্রিয়) সহ, ক্রিয়াকলাপটি থমকে থাকা অবস্থায় নেই। সূত্র: ডেভেলপার.আ্যান্ড্রয়েড.
com/guide/topics/ui/…

45

শেষের দিকে:

  • প্রথমে লোকালব্রডকাস্ট রিসিভার নিবন্ধন করুন
  • তারপরে অনক্রমে আগত ইনটেন্ট ডেটা হ্যান্ডেল করুন।

      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
    
          LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(this);
          lbm.registerReceiver(receiver, new IntentFilter("filter_string"));
      }
    
      public BroadcastReceiver receiver = new BroadcastReceiver() {
          @Override
          public void onReceive(Context context, Intent intent) {
              if (intent != null) {
                  String str = intent.getStringExtra("key");
                  // get all your data from intent and do what you want 
              }
          }
      };

প্রেরণ শেষ:

   Intent intent = new Intent("filter_string");
   intent.putExtra("key", "My Data");
   // put your all data using put extra 

   LocalBroadcastManager.getInstance(this).sendBroadcast(intent);

আমার ক্ষেত্রে কেবল যখন আমি ব্রডকাস্ট কাজগুলি প্রেরণ করার উদ্দেশ্যে যখন অ্যাকশন সেট করি অন্যথায়
অন

27

অ্যাকলিপসে, শেষ পর্যন্ত আমাকে আমার প্রকল্পে ডান ক্লিক করে এবং নির্বাচন করে সামঞ্জস্যতা / সহায়তা লাইব্রেরি যুক্ত করতে হয়েছিল:

Android Tools -> Add Support Library

এটি যুক্ত হয়ে গেলে, আমি তখন আমার কোডটিতে LocalBroadcastManagerক্লাস ব্যবহার করতে সক্ষম হয়েছি।


অ্যান্ড্রয়েড সামঞ্জস্য লাইব্রেরি


12

কীভাবে আপনার বিশ্বব্যাপী সম্প্রচারটি লোকালব্রোডকাস্টে পরিবর্তন করবেন

1) ইনস্ট্যান্স তৈরি করুন

LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);

2) ব্রডকাস্টারসিভার নিবন্ধনের জন্য

প্রতিস্থাপন করা

registerReceiver(new YourReceiver(),new IntentFilter("YourAction"));

সঙ্গে

localBroadcastManager.registerReceiver(new YourReceiver(),new IntentFilter("YourAction"));

3) সম্প্রচার বার্তা প্রেরণের জন্য

প্রতিস্থাপন করা

sendBroadcast(intent);

সঙ্গে

localBroadcastManager.sendBroadcast(intent);

4) সম্প্রচারিত বার্তাটি নিবন্ধভুক্ত করার জন্য

প্রতিস্থাপন করা

unregisterReceiver(mybroadcast);

সঙ্গে

localBroadcastManager.unregisterReceiver(mybroadcast);

আমি কীভাবে একাধিক ইনট্যান্ট ফিল্টার নিবন্ধন করতে পারি ??
পরিক্ষিত চালকে

@ পারীক্ষিতচালকে: লিঙ্ক
এক্সম্যান

12

লোকালব্রডকাস্টম্যানেজার অবহিত করা হয়েছে, পরিবর্তে পর্যবেক্ষণযোগ্য প্যাটার্নের প্রয়োগগুলি ব্যবহার করুন।

androidx.localbroadcastmanager 1.1.0 সংস্করণে অবচয় করা হচ্ছে

কারণ

LocalBroadcastManagerঅ্যাপ্লিকেশন-ব্যাপী ইভেন্ট বাস এবং আপনার অ্যাপ্লিকেশনটিতে স্তর লঙ্ঘনকে আলিঙ্গন করে; যে কোনও উপাদান অন্য কোনও উপাদান থেকে ইভেন্টগুলি শুনতে পারে। এটি সিস্টেম ব্রডকাস্টম্যানেজারের অপ্রয়োজনীয় ব্যবহারের ক্ষেত্রে সীমাবদ্ধতার উত্তরাধিকার সূত্রে প্রাপ্ত; বিকাশকারীদের উদ্দেশ্যগুলি ব্যবহার করতে হবে যদিও বস্তুগুলি কেবলমাত্র একটি প্রক্রিয়াতে থাকে এবং কখনই এটি ছেড়ে যায় না। এই একই কারণে, এটি বৈশিষ্ট্য ভিত্তিক ব্রডকাস্ট ম্যানেজারটি অনুসরণ করে না।

এগুলি একটি বিভ্রান্তিকর বিকাশকারীদের অভিজ্ঞতা জুড়ে দেয়।

প্রতিস্থাপন

আপনি LocalBroadcastManagerপর্যবেক্ষণযোগ্য প্যাটার্নের অন্যান্য বাস্তবায়নের সাথে ব্যবহারের স্থান পরিবর্তন করতে পারেন । আপনার ব্যবহারের ক্ষেত্রে উপর নির্ভর করে উপযুক্ত বিকল্পগুলি LiveDataবা প্রতিক্রিয়াশীল স্ট্রিম হতে পারে ।

লাইভডাটার সুবিধা

আপনি LiveDataসিস্টেম অ্যাপ্লিকেশনগুলিকে মোড়ানোর জন্য সিঙ্গলটন প্যাটার্ন ব্যবহার করে কোনও বস্তু প্রসারিত করতে পারেন যাতে সেগুলি আপনার অ্যাপে ভাগ করা যায়। LiveDataসিস্টেম সেবা একবার, এবং তারপর কোনো পর্যবেক্ষক যে সম্পদ দরকার শুধু দেখতে পারেন বস্তুর সংযোগ স্থাপন করে LiveDataঅবজেক্ট।

 public class MyFragment extends Fragment {
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        LiveData<BigDecimal> myPriceListener = ...;
        myPriceListener.observe(this, price -> {
            // Update the UI.
        });
    }
}

observe()পদ্ধতি টুকরা, যার মধ্যে একটি দৃষ্টান্ত হল পাসের LifecycleOwnerপ্রথম আর্গুমেন্ট হিসাবে। এটি করা বোঝায় যে এই পর্যবেক্ষক Lifecycleমালিকের সাথে সম্পর্কিত বস্তুর সাথে আবদ্ধ , যার অর্থ:

  • যদি লাইফাইসাইকেল বস্তুটি সক্রিয় অবস্থায় না থাকে তবে মান পরিবর্তন হলেও পর্যবেক্ষককে ডাকা হয় না।

  • লাইফাইকেল বস্তুটি ধ্বংস হওয়ার পরে, পর্যবেক্ষক স্বয়ংক্রিয়ভাবে সরানো হবে

সত্য যে LiveDataবস্তু জীবনচক্র-সচেতন উপায়ে যে আপনি তাদের একাধিক কার্যক্রম, টুকরা, এবং পরিসেবার মধ্যে ভাগ করে নিতে পারেন আছে।


1
আপনি পুরো বিশ্বের কাছে কনটেক্সটগুলি ফাঁস করার বিষয়ে ঠিকই বলেছেন, তবে আমি জানতে চাই যে যখন আমি কোনও অগ্রগামী পরিষেবাটি কোনও ক্রিয়াকলাপ ছাড়াই চলমান যোগাযোগ থেকে যোগাযোগ করতে চাই তখন কী উপযুক্ত প্রতিস্থাপন হতে পারে, তবে যখন কার্যকলাপ আসে তখন তাদের যোগাযোগ করা দরকার?
এটিবিহামেড

1
লাইভডেটা অবজেক্ট সহ একটি সিঙ্গলটন ক্লাস তৈরি করুন এবং পরিষেবাটি থেকে আপনার ডেটা পোস্ট করুন। ক্রিয়াকলাপটি একবার চালু হওয়ার পরে, ক্রিয়াকলাপটি কোনও ক্ষতি ছাড়াই সহজেই লাইভ ডেটা পর্যবেক্ষণ করতে পারে। উদাহরণস্বরূপ: মাই সার্ভিসডাটা.জেটআইনস্ট্যানস ()। গেটমাইডাটা ()। পর্যবেক্ষণ ...
দারিশ

3
আমি লোকালব্রডকাস্টম্যানেজারটি মিস করব। যদি এটি গুগলে বিকাশকারীদের জন্য বিভ্রান্তিকর হয় তবে সম্ভবত তাদের ওভার-ইঞ্জিনিয়ারিংয়ের জিনিসগুলি থামানো দরকার?
এএফডি

@ ডরিশ এই সিঙ্গলটন ক্লাসটি অ্যাপ্লিকেশন অবজেক্টে এটি সংরক্ষণ করার সমতুল্য হবে? এই ক্ষেত্রে এই জাতীয় বৈশ্বিক রাষ্ট্রকে খারাপ অভ্যাস হিসাবে বিবেচনা করা হয় না কেন?
xuiqzy

6

আপনি যখন লোকালব্রডকাস্টার রিসিভারের সাথে যথেষ্ট খেলবেন তখন আমি আপনাকে গ্রিন রোবটের ইভেন্টবাসটি একবার ব্যবহার করার পরামর্শ দিচ্ছি - আপনি অবশ্যই এলবিআরের তুলনায় এর পার্থক্য এবং কার্যকারিতা উপলব্ধি করতে পারবেন। কম কোড, রিসিভারের থ্রেড (ইউআই / বিজি) সম্পর্কে কাস্টমাইজযোগ্য, রিসিভারের প্রাপ্যতা পরীক্ষা করা, স্টিকি স্ট্যাটাস, ইভেন্টগুলি ডেটা বিতরণ হিসাবে ব্যবহার করা যেতে পারে ইত্যাদি etc.


2

একটি কার্যকলাপ এবং একটি সার্ভিস LocalBroadcastManager বাস্তবায়নে একটি উদাহরণ ডেভেলপার খুঁজে পাওয়া যেতে পারে ডক্স । আমি ব্যক্তিগতভাবে এটি খুব দরকারী বলে মনে করি।

সম্পাদনা: এর পর থেকে লিঙ্কটি সাইট থেকে সরানো হয়েছে, তবে তথ্যটি নিম্নলিখিত: https://github.com/carrot-garden/android_maven-android-plugin-sams/blob/master/support4 েমোস / এসসিআর / কম / উদাহরণস্বরূপ / অ্যান্ড্রয়েড / supportv4 / বিষয়বস্তু / LocalServiceBroadcaster.java



0

ট্যাগ সহ আপনার অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল ফাইলের মধ্যে একটি ঘোষণা করে (এটি স্ট্যাটিকও বলে)

<receiver android:name=".YourBrodcastReceiverClass"  android:exported="true">
<intent-filter>
    <!-- The actions you wish to listen to, below is an example -->
    <action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>

আপনি খেয়াল করবেন যে উপরে ঘোষিত ব্রডকাস্ট রিসিভারের রফতানির = "সত্য" এর সম্পত্তি রয়েছে। এই বৈশিষ্ট্যটি প্রাপককে বলে যে এটি প্রয়োগের ক্ষেত্রের বাইরে থেকে সম্প্রচার গ্রহণ করতে পারে।
২. অথবা গতিশীলভাবে নিবন্ধভুক্তকারীকে (যা প্রসঙ্গে নিবন্ধভুক্ত হিসাবে পরিচিত) সাথে নিবন্ধটি নিবন্ধ করে

public abstract Intent registerReceiver (BroadcastReceiver receiver, 
            IntentFilter filter);

public void onReceive(Context context, Intent intent) {
//Implement your logic here
}

সম্প্রচার পাঠানোর জন্য তিনটি উপায় রয়েছে:
সেন্ডআর্ডডড্রোডকাস্ট পদ্ধতিটি একবারে কেবলমাত্র একজন রিসিভারের কাছে সম্প্রচার প্রেরণ নিশ্চিত করে। প্রতিটি সম্প্রচার ঘুরেফিরে, নিম্নলিখিতগুলির সাথে ডেটা বরাবর প্রেরণ করতে পারে, বা অনুসরণকারীদের কাছে সম্প্রচারের প্রচার বন্ধ করতে পারে।
সেন্ডব্রোডকাস্ট একটি পার্থক্য সহ উপরে বর্ণিত পদ্ধতির সাথে সমান। সমস্ত সম্প্রচার গ্রহণকারীরা বার্তাটি গ্রহণ করে এবং একে অপরের উপর নির্ভর করে না।
লোকালড্রোডকাস্টম্যানেজ.সেন্ড ব্রডকাস্ট পদ্ধতিটি কেবলমাত্র আপনার অ্যাপ্লিকেশনের অভ্যন্তরে সংজ্ঞায়িত রিসিভারগুলিতে সম্প্রচার পাঠায় এবং আপনার আবেদনের পরিধি ছাড়িয়ে যায় না।


-4

আমরা ব্রডকাস্টম্যাঞ্জার হিসাবে একই জন্য ইন্টারফেসও ব্যবহার করতে পারি এখানে আমি ব্রডকাস্টম্যানেজারের জন্য টেস্ট কোডটি ভাগ করছি তবে ইন্টারফেসের মাধ্যমে।

প্রথমে একটি ইন্টারফেস তৈরি করুন:

public interface MyInterface {
     void GetName(String name);
}

2-এটি প্রথম শ্রেণীর যা বাস্তবায়নের প্রয়োজন

public class First implements MyInterface{

    MyInterface interfc;    
    public static void main(String[] args) {
      First f=new First();      
      Second s=new Second();
      f.initIterface(s);
      f.GetName("Paddy");
  }
  private void initIterface(MyInterface interfc){
    this.interfc=interfc;
  }
  public void GetName(String name) {
    System.out.println("first "+name);
    interfc.GetName(name);  
  }
}

3-এখানে দ্বিতীয় শ্রেণিটি একই ইন্টারফেসটি প্রয়োগ করে যার পদ্ধতিটি স্বয়ংক্রিয়ভাবে কল

public class Second implements MyInterface{
   public void GetName(String name) {
     System.out.println("Second"+name);
   }
}

সুতরাং এই পদ্ধতির দ্বারা আমরা ইন্টারফেসটি ব্রডকাস্টম্যানেজারের মতোই ব্যবহার করতে পারি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.