IntentService
ক্লাস একটি একক ব্যাকগ্রাউন্ড থ্রেডে একটি অপারেশন চালানোর জন্য একটি সরল কাঠামো প্রদান করে। এটি এটিকে আপনার ইউজার ইন্টারফেসের প্রতিক্রিয়াশীলতাকে প্রভাবিত না করেই দীর্ঘমেয়াদী ক্রিয়াকলাপ পরিচালনা করতে দেয়। এছাড়াও, একটি IntentService
বেশিরভাগ ইউজার ইন্টারফেস লাইফসাইকেল ইভেন্ট দ্বারা প্রভাবিত হয় না, তাই এটি এমন পরিস্থিতিতে চলতে থাকে যা একটি AsyncTask
বন্ধ করে দেয়
একটি IntentService
কয়েকটি সীমাবদ্ধতা রয়েছে:
- এটি আপনার ব্যবহারকারী ইন্টারফেসের সাথে সরাসরি যোগাযোগ করতে পারে না। এর ফলাফলগুলি UI-তে রাখতে, আপনাকে সেগুলিকে একটি
Activity
পাঠাতে হবে। - কাজের অনুরোধ ক্রমানুসারে চলে। যদি একটি ক্রিয়াকলাপ একটি
IntentService
এ চলছে, এবং আপনি এটিকে অন্য একটি অনুরোধ পাঠান, অনুরোধটি প্রথম অপারেশন শেষ না হওয়া পর্যন্ত অপেক্ষা করে৷ - একটি
IntentService
চলমান একটি অপারেশন বাধা দেওয়া যাবে না.
যাইহোক, বেশিরভাগ ক্ষেত্রে একটি IntentService
হল সাধারণ ব্যাকগ্রাউন্ড অপারেশন করার জন্য পছন্দের উপায়।
এই নির্দেশিকা আপনাকে নিম্নলিখিত জিনিসগুলি কীভাবে করতে হয় তা দেখায়:
-
IntentService
এর আপনার নিজস্ব সাবক্লাস তৈরি করুন। -
onHandleIntent()
প্রয়োজনীয় কলব্যাক পদ্ধতি তৈরি করুন। - আপনার ম্যানিফেস্ট ফাইলে
IntentService
সংজ্ঞায়িত করুন।
ইনকামিং intents হ্যান্ডেল
আপনার অ্যাপের জন্য একটি IntentService
উপাদান তৈরি করতে, একটি ক্লাস সংজ্ঞায়িত করুন যা IntentService
প্রসারিত করে এবং এর মধ্যে, একটি পদ্ধতি সংজ্ঞায়িত করুন যা onHandleIntent()
ওভাররাইড করে। যেমন:
কোটলিন
class RSSPullService : IntentService(RSSPullService::class.simpleName) override fun onHandleIntent(workIntent: Intent) { // Gets data from the incoming Intent val dataString = workIntent.dataString ... // Do work here, based on the contents of dataString ... } }
জাভা
public class RSSPullService extends IntentService { @Override protected void onHandleIntent(Intent workIntent) { // Gets data from the incoming Intent String dataString = workIntent.getDataString(); ... // Do work here, based on the contents of dataString ... } }
লক্ষ্য করুন যে একটি নিয়মিত Service
উপাদানের অন্যান্য কলব্যাক, যেমন onStartCommand()
স্বয়ংক্রিয়ভাবে IntentService
দ্বারা আহ্বান করা হয়। একটি IntentService
এ, আপনার এই কলব্যাকগুলিকে ওভাররাইড করা এড়ানো উচিত৷
একটি IntentService
তৈরি সম্পর্কে আরও জানতে, IntentService ক্লাস প্রসারিত করা দেখুন।
ম্যানিফেস্টে অভিপ্রায় পরিষেবা সংজ্ঞায়িত করুন
একটি IntentService
এরও আপনার অ্যাপ্লিকেশন ম্যানিফেস্টে একটি এন্ট্রি প্রয়োজন৷ এই এন্ট্রিটিকে একটি <service>
উপাদান হিসেবে প্রদান করুন যা <application>
উপাদানের একটি শিশু:
<application android:icon="@drawable/icon" android:label="@string/app_name"> ... <!-- Because android:exported is set to "false", the service is only available to this app. --> <service android:name=".RSSPullService" android:exported="false"/> ... </application>
অ্যাট্রিবিউট android:name
IntentService
এর ক্লাসের নাম নির্দিষ্ট করে।
লক্ষ্য করুন যে <service>
উপাদানটিতে একটি অভিপ্রায় ফিল্টার নেই। যে Activity
পরিষেবাতে কাজের অনুরোধ পাঠায় সেটি একটি স্পষ্ট Intent
ব্যবহার করে, তাই কোনও ফিল্টারের প্রয়োজন নেই৷ এর মানে হল যে শুধুমাত্র একই অ্যাপের উপাদান বা একই ব্যবহারকারী আইডি সহ অন্যান্য অ্যাপ্লিকেশনগুলি পরিষেবাটি অ্যাক্সেস করতে পারে৷
এখন আপনার কাছে মৌলিক IntentService
ক্লাস আছে, আপনি Intent
অবজেক্টের সাথে এটিতে কাজের অনুরোধ পাঠাতে পারেন। এই বস্তুগুলি তৈরি করার এবং আপনার IntentService
এ পাঠানোর পদ্ধতিটি ব্যাকগ্রাউন্ড পরিষেবাতে কাজের অনুরোধ পাঠান- এ বর্ণিত আছে।