Android

ইভেন্ট বাস (EVENTBUS) -> এন্ড্রয়েড ইভেন্ট ম্যানেজার

EventBus

ইভেন্ট বাস (EVENTBUS) -> এন্ড্রয়েড ইভেন্ট ম্যানেজার

লেখা পড়ার পূর্বে শুরুতেই একটি প্রশ্ন আসতে পারে কেন আমরা ইভেন্ট বাস (EventBus) নিয়ে কাজ করব বা ইভেন্ট বাস শিখব?

প্রায় একাধিক কারণেই আমাদের ইভেন্ট বাস ব্যবহার করা দরকার।

১) লুজ কাপলিং (loose coupling)

-> কাপলিং হচ্ছে কোন একটি সিস্টেমে, উপাদানগুলো একে অপরের উপর নির্ভরশীল হওয়া।

লুজ কাপলিং বলতে মূলত তাদের ভিতরকার নির্ভরশীলতা কম হওয়া কে বুঝায়।

 

২) অনেক সময় একই ইভেন্ট একটি এপের বিভিন্ন ল্যায়ারে ব্যবহার করার প্রয়োজনীয়তা দেখা দিতে পারে, আমরা সেই কাজটি ইভেন্ট বাসের মাধ্যমে খুব সহজেই করতে পারি। ইভেন্ট বাস এটির জন্য একটি চেন্টারালাইজড ওয়েতে এপের বিভিন্ন ফাংশনালিটিতে ইভেন্টি পৌছিয়ে দেয়। এটি করার জন্যে কাপলিং এর কোন প্রয়োজনীয়তা নেই।

 

৩) ইভেন্ট বাস (EventBus) ব্যবহার করে কোড অনেকাংশেই কমিয়ে আনা সম্ভব। বিভিন্ন ল্যায়ারে ম্যসেজ পাঠানো বা কমিউনিকেশনের জন্যে ইন্টারফেইস বা এসিঙ্ক্রোনাস কমিনিউকেশনের দরকার নেই। এটি কোডকে অনেকটাই ডিকাপল্ড করতে সাহায্য করে।

 

### ইভেন্টবাস (EventBus) বিভিন্ন একটিভিটি, ফ্রেগমেন্ট ও সার্ভিসের মধ্যে কমিনিকেশনের জন্যেও ব্যবহার করা যায়।

 

ইভেন্ট বাস সম্পর্কেঃ

ইভেন্ট বাস (EventBus) মূলত সফটওয়্যার আর্কিটেকচারের পাবলিশ-সাবস্ক্রাইব https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern/ প্যাটার্ন এর উপর ভিত্তি করে কাজ করে।

এটি একটি বার্তা প্রেরণের নকশা (প্যাটার্ন) যেখানে বার্তা যে পাঠাবে তাকে পাবলিশার এবং বার্তা যে রিসিভ করবে তাকে সাবস্ক্রাইব বলে। পাবলিশার জানেনা কে বা কারা তার বার্তা রিসিভ করবে এবং রিসিভার জানেনা কোন পাব্লিশারের বার্তা তারা রিসিভ করবে।

পাবলিশারের কাজ হচ্ছে শুধু বার্তা বা মেসেজ পাঠানো। কে বা কারা তা রিসিভ করবে সেটা তার বিবেচ্য নয়।

রিসিভার বা সাবস্ক্রাইবার বার্তা বা মেসেজ রিসিভ করবে যে কোন পাবলিশারের। সে শুধু সেসব মেসেজই পাবে যেগুলোর উপর তার ইন্টারেস্ট আছে বা যেসব পাবলিশারের বার্তা পাওয়ার জন্যে সে সাবস্ক্রাইব করেছে।

***

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

EventBus Dependency 

 

event bus life cycle
event bus life cycle

লাইফ সাইকেল দেখে আমরা বুঝতে পারি একটি নির্দিষ্ট মেসেজ/ইভেন্টের জন্যে একাধিক সাবস্ক্রাইবার থাকতে পারে। পাবলিশার যখনি একটি ইভেন্ট তৈরি করে, সাবক্রাইব করা সকলেই সেই ইভেন্ট সম্পর্কে মেসেজ রিসিভ করে।

 

এখন আমরা দেখব কিভাবে কোডে পাবলিশ এবং সাবস্ক্রাইভ প্যাটার্ন কাজ করে।

ইভেন্ট পাবলিশ করার কোড।

ইভেন্ট সাবসক্রাইব করার কোড

 

সাবস্ক্রাইবার দের মেসেজ পাওয়ার জন্যে রেজিস্টার করা লাগবে। এপ থেকে বের হওয়ার পূর্বে সকল ইভেন্ট এর জন্যে সাবস্ক্রাইবারদের আনরেজিস্টার করা দরকার। নাহলে অতিরিক্ত মেমোরি লস হয়ে এপ ক্র্যাশ হতে পারে।

 

Leave a Reply

Your email address will not be published.

18 − 16 =