পরিষেবা, অ্যাসিঙ্ক টাস্ক এবং থ্রেডের মধ্যে পার্থক্য কী। আমি যদি ভুল না করি তবে সেগুলির সমস্তগুলি পটভূমিতে কিছু স্টাফ করার জন্য ব্যবহৃত হয়। সুতরাং, কোনটি কখন ব্যবহার করবেন তা সিদ্ধান্ত নেবেন কীভাবে?
পরিষেবা, অ্যাসিঙ্ক টাস্ক এবং থ্রেডের মধ্যে পার্থক্য কী। আমি যদি ভুল না করি তবে সেগুলির সমস্তগুলি পটভূমিতে কিছু স্টাফ করার জন্য ব্যবহৃত হয়। সুতরাং, কোনটি কখন ব্যবহার করবেন তা সিদ্ধান্ত নেবেন কীভাবে?
উত্তর:
সম্ভবত আপনি তাদের সম্পর্কে ডকুমেন্টেশনের বিবরণটি ইতিমধ্যে পড়েছেন, আমি সেগুলি পুনরাবৃত্তি করব না, পরিবর্তে আমি নিজের কথায় উত্তর দেওয়ার চেষ্টা করব, আশা করি তারা আপনাকে সহায়তা করবে।
পরিষেবা একটি ক্রিয়াকলাপের মতো তবে এর কোনও ব্যবহারকারীর ইন্টারফেস নেই। সম্ভবত আপনি উদাহরণস্বরূপ আবহাওয়া আনতে চান তবে আপনি এর জন্য কোনও ফাঁকা কার্যকলাপ তৈরি করবেন না, এর জন্য আপনি একটি পরিষেবা ব্যবহার করবেন।
একটি থ্রেড একটি থ্রেড, সম্ভবত আপনি এটি ইতিমধ্যে অন্য অংশ থেকে জানেন। আপনার জানতে হবে যে আপনি কোনও থ্রেড থেকে ইউআই আপডেট করতে পারবেন না। এর জন্য আপনাকে একটি হ্যান্ডলার ব্যবহার করতে হবে তবে আরও পড়ুন।
অ্যাসিঙ্কটাস্ক একটি বুদ্ধিমান থ্রেড যা ব্যবহার করার পরামর্শ দেওয়া হয়। বুদ্ধিমান যেহেতু এটি এর পদ্ধতিগুলির সাথে সহায়তা করতে পারে এবং ইউআই থ্রেডে চালিত তিনটি পদ্ধতি রয়েছে যা ইউআই উপাদানগুলি আপডেট করা ভাল।
আমি ঘন ঘন পরিষেবাগুলি, অ্যাসিঙ্কটাস্ক ব্যবহার করছি। থ্রেড কম, না মোটেও না, কারণ আমি AsyncTask দিয়ে প্রায় সব কিছু করতে পারি।
এটি আপনার প্রশ্নের সহজ উত্তর
সুতা
মৃত্যুদন্ড কার্যকর করার একক যা মূল থ্রেডের "সমান্তরাল" চালায় run এটি একটি গুরুত্বপূর্ণ বিষয়, আপনি এখানে মূল থ্রেড বাদে কোনও থ্রেড থেকে কোনও ইউআই উপাদান আপডেট করতে পারবেন না।
AsyncTask
একটি বিশেষ থ্রেড, যা আপনাকে ইউআই আপডেট করার জন্য সহায়ক পদ্ধতি দেয় যাতে মূলত আপনি ইউআই আপডেট করতে পারেন এমনকি অ্যাসিঙ্কটাস্ক একটি ব্যাকগ্রাউন্ড থ্রেডে চলবে। ইন্টারপ্রসেস যোগাযোগ হ্যান্ডলিং স্পষ্টভাবে করা প্রয়োজন হয় না।
সেবা
উপরের সমস্যাটি সমাধান করুন কারণ এটি ক্রিয়াকলাপ থেকে পৃথকভাবে বাস করে যা এটি চালিয়ে যেতে পারে যাতে কার্যকলাপটি ধ্বংস হওয়ার পরেও এটি চলতে পারে, এটি মেইন থ্রেডে চালিত হয় (এএনআর থেকে সাবধান থাকুন) একটি পটভূমি পরিষেবা ব্যবহার করে (প্রসারিত ইনটেন্স সার্ভিসটি স্বয়ংক্রিয়ভাবে কর্মী থ্রেড তৈরি করে) আপনার জন্য) । পরিষেবা ইউআই ছাড়াই কোনও ক্রিয়াকলাপের মতো , দীর্ঘ কাজের জন্য ভাল
আরও কিছু তথ্য আমি চাই কয়েকদিন আগে কেউ আমাকে বলেছিল:
আমার ব্যবহারের কেসটি এরকম: বিশ্বব্যাপী স্পেসে আমার একটি থ্রেড রয়েছে যা একটি সার্ভারের সাথে সংযুক্ত এবং ফলাফলগুলি দেখায় এমন একটি ক্রিয়াকলাপ। যখন ব্যবহারকারী হোম বোতাম টিপেন, ক্রিয়াকলাপ পটভূমিতে যায় এবং একটি নতুন পরিষেবা শুরু হয়। এই পরিষেবাটি পরে থ্রেড থেকে ফলাফলগুলি পড়ে এবং প্রয়োজনে বিজ্ঞপ্তি অঞ্চলে তথ্য প্রদর্শন করে। ওএস আমার ক্রিয়াকলাপ নষ্ট করার বিষয়ে উদ্বিগ্ন হব না কারণ আমি জানি যে যতক্ষণ পরিষেবা চলছে ততক্ষণ থ্রেডটি নষ্ট করবে।
বিকাশকারীর দৃষ্টিকোণ থেকে:
থ্রেড : মূল থ্রেডের সমান্তরালভাবে কোডগুলিতে সেটটি কার্যকর করতে ব্যবহৃত হয়। তবে আপনি থ্রেডের ভিতরে ইউআই পরিচালনা করতে পারবেন না। তার জন্য আপনার ব্যবহার করা দরকার Handler। হ্যাডলার থ্রেডের মতো কাজ করে তবে ইউআইও পরিচালনা করতে পারে।
ASyncTask : মূল থ্রেডে আপনি যে কাজগুলি করতে পারবেন না সেগুলি পরিচালনা করার জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, এইচটিটিপি অনুরোধটি খুব ভারী কাজ যা মূল থ্রেডে হ্যান্ডেল করা যায় না, সুতরাং আপনি HTTP অনুরোধটি হ্যান্ডেল করে ASyncTaskএটি ব্যাকগ্রাউন্ডে আপনার মূল থ্রেডের সাথে সমান্তরালভাবে কাজ করে t এটিতে কিছু কলব্যাক পদ্ধতি রয়েছে যা তাদের সাথে সম্পর্কিত হয় are ইভেন্ট নেই।
পরিষেবা : একটি পটভূমি প্রক্রিয়া। এটি নিযুক্ত করা হয় যখন আপনাকে এমন কিছু প্রক্রিয়াজাতকরণ করতে হয় যার সাথে কোনও ইউআই যুক্ত থাকে না।
Serviceআপনি ব্যবহার না করা ব্যাকগ্রাউন্ডে চালানো প্রয়োজন হবে না IntentService। আপনি যদি Serviceইউআইথ্রেড থেকে স্ট্যান্ডআর্ট শুরু করেন তবে এটি ইউআইথ্রেডে চলবে।
Serviceডিফল্ট হিসাবে কোনও পৃথক প্রক্রিয়াতে চলবে না, তবে অন্যান্য উপাদানগুলির সাথে অ্যাপ্লিকেশন প্রক্রিয়াতে। Serviceএটি যে থ্রেডের অভ্যন্তরে থাকে তার পটভূমিতে এটি চালানো আরও ভাল ।