Android

এন্ড্রয়েডের ব্যাকগ্রাউন্ডে কাজ পরিচিতি

এন্ড্রয়েডের ব্যাকগ্রাউন্ডে কাজ

 

মেইন থ্রেড/ইউআই থ্রেড/লুপারঃ

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

 

থ্রেডঃ

একের পর এক কাজ করার জন্যে এন্ড্রয়েডে থ্রেড ব্যবহার হয়ে থাকে। সব কাজ কে মেইন থ্রেডে লোড না করে একের পর এক কাজের নির্দেশ এই থ্রেড দিয়েই দেওয়া হয়।

ব্যাকগ্রাউন্ড থেকে আমরা যদি তৎক্ষণাত এপের ইন্টারফেস বদলাতে চাই তাহলে আমাদেরকে মেইন থ্রেডের সাথে কাজটিকে সিঙ্ক্রোনাইজ করতে হবে।

 

Android Background
Android Background Process

থ্রেডের জন্যে উপরের চিত্রটি একটু ব্যাখ্যা করা যাক।

মেইন থ্রেড বা লুপারে এপের বিভিন্ন নির্দেশ গুলো সিঙ্ক্রোনাস বা এসিঙ্ক্রোনাস ভাবে যেতে পারে। যেভাবেই যাক না কেন, এই নির্দেশ গুলো চিত্রের মত সিস্টেমের মেসেজ কিউ তে গিয়ে জমা হয়।

এসিঙ্ক্রোনাস হলে নির্দেশ গুলো একটার পর একটা থাকে মেসেজ কিউ তে এবং সিঙ্ক্রোনাস হলে নির্দেশ টি সরাসরি মেইন থ্রেড বা লুপারে গিয়ে পৌছায়।

 

এবার আশা যাক হ্যান্ডালার পর্যায়ে,

হ্যান্ডেলার সেন্ড মেসেজ, পোস্ট , পোস্ট ডিলেইড ইত্যাদি বিভিন্ন ফাংশানের মাধ্যমে ওয়ার্কিং থ্রেড থেকে মেইন থ্রেড / লুপারে নির্দেশ বা ডাটা পাঠায়। সেই ডাটা বা নির্দেশ গিয়ে মেসেজ কিউতে গিয়ে পৌছায়। মেইন থ্রেডে হ্যান্ডেল মেসেজ মেথোডের মাধ্যমে হ্যান্ডেলার ওয়ার্কিং থ্রেডের ডাটা রিসিভ করে থাকে।

নোটঃ মেইন থ্রেড ছাড়া অন্য আরেকটি থ্রেডে কাজ করা হলে সেটিকে ওয়ার্কিং থ্রেড বলে।

হ্যান্ডেলার থ্রেড এবং হ্যান্ডেলারঃ

হ্যান্ডেলার থ্রেড ওয়ার্ক থ্রেড তৈরি করার জন্যে একটি সাহায্যকারী ক্লাস যেটি একের পর এক কাজ রান করে থাকে।  সিংগেল থ্রেড নিয়ে এটি লুপ সক্ষম কোড রান করে এবং ব্যাকগ্রাউন্ড থ্রেড থেকে মেসেজ মেইন থ্রেডে পাঠায়।

হ্যান্ডেলারঃ

এটি একটি থ্রেডের সাথে তৈরি করা হয়। ব্যাকগ্রাউন্ড থ্রেড থেকে মেইন থ্রেডে রানেবল কোড বা মেসেজ পাঠাতে এটি ব্যবহৃত হয়।

ব্যাকগ্রাউন্ড থেকে মেইন থ্রেডে একাধিক মেসেজ একের পর এক পাঠাতে এটি ব্যবহৃত হয়।

 

এসিন্টাস্কঃ

ব্যাকগ্রাউন্ডে ছোট কাজ করে ইন্টারফেস আপডেট করার জন্যে এসিন্টাস্ক ব্যবহার করা যেতে পারে।

 

সার্ভিসঃ

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

এছাড়াও সার্ভিস অন্যান্য ব্যাকগ্রাউন্ড টাস্ক থেকে অগ্রাধিকার বেশি পেয়ে থাকে, তাই এন্ড্রয়েড খুব কমই সার্ভিস কে টার্মিনেট করে। সিস্টেমের রিসোর্চ ফুল হলে সার্ভিস টার্মিনেট হতে পারে, কিন্তু রিসোর্চ ফ্রি হলেই সার্ভিস পুনরায় শুরু করার জন্যে কনফিগার করা যায়।

ইন্টেন্ট সার্ভিসঃ

এটি একটি ওয়ার্কিং থ্রেডে তার কাজ সম্পাদন করে।

ইন্টেন্ট সার্ভিসের কিছু অসক্ষমতাঃ

১) ব্যাকগ্রাউন্ডে থেকে ইউজার ইন্টারফেস পরিবর্তন করা যায় না।

২) যেহেতু এটি একটি মাত্র থ্রেডে কাজ করে তাই এতে প্যারালেল কাজ সম্ভব নয়। একটি কাজ শেষ করে আবার সেখানে নতুন কাজ শুরু করতে হয়। কেননা কাজ শেষ হলে এই সার্ভিস বন্ধ হয়ে যায়।

৩) শুরু করার পর ইন্টেন্ট সার্ভিস বন্ধ করা যায় না।

 

*** সার্ভিস ব্যবহার করলে কাজ টা মূলত সিস্টেমের ব্যাকগ্রাউন্ডেই হয়। কাজ ব্যাকগ্রাউন্ড থেকে এপের সাথে যোগাযোগের জন্যে দুইটি মেথোড রয়েছে।

১) রেজাল্ট রিসিভার

২) ব্রডকাস্ট রিসিভার

 

রেজাল্ট রিসিভারঃ

একটি নির্দিষ্ট জায়গা বা এপ্লিকেশনে কমিউনিকেশনের জন্যে ব্যবহৃত হয়। যে একটিভিটি বা এপলিকেশন থেকে সার্ভিসটি তৈরি হয়েছে সেখানে ডাটা পাঠানোর জন্যে, মূলত যার দ্বারা সার্ভিস ক্রিয়েট হয়েছে শুধু সেখানেই ডাটা পাঠানোর জন্যে এটি ব্যবহার করা ভাল।

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

১) সার্ভিস ফায়ার হওয়ার পর সাথে সাথে এপ ক্লোজ হলে রেজাল্ট রিসিভার ডাটা রিসিভ করবেনা।

২) মাল্টিপল একটিভিটি যদি রেজাল্ট রিসিভার দিয়ে ডাটা রিসিভ করতে চায় তাহলে, প্রত্যেককেই সার্ভিস কল (সার্ভিস ক্লাসের অবজেক্ট তৈরি করে ইনিশিয়ালাইজ করা প্রত্যেক্টি একটিভিটি থেকে) করতে হবে।

 

ব্রোডকাস্ট রিসিভারঃ

মাল্টিপল কম্পোনেন্ট কমিউনিকেশনের জন্যে ব্যবহার। তবে সিংগেল কমিউনিকেশনেও ব্যবহারযোগ্য।

এপলিকেশন ক্লোজ হওয়ার পরেও ব্যাকগ্রাউন্ড থেকে ডাটা রিসিভ করার জন্যে বা একাধিক এপস ডাটা রিসিভ করার জন্যে ব্রডকাস্ট রিসিভ ব্যবহার করবে।

 

 

Leave a Reply

Your email address will not be published.

twenty − seven =