পরিষেবা, অ্যাসিঙ্ক টাস্ক এবং থ্রেডের মধ্যে পার্থক্য?


147

পরিষেবা, অ্যাসিঙ্ক টাস্ক এবং থ্রেডের মধ্যে পার্থক্য কী। আমি যদি ভুল না করি তবে সেগুলির সমস্তগুলি পটভূমিতে কিছু স্টাফ করার জন্য ব্যবহৃত হয়। সুতরাং, কোনটি কখন ব্যবহার করবেন তা সিদ্ধান্ত নেবেন কীভাবে?


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

উত্তর:


186

সম্ভবত আপনি তাদের সম্পর্কে ডকুমেন্টেশনের বিবরণটি ইতিমধ্যে পড়েছেন, আমি সেগুলি পুনরাবৃত্তি করব না, পরিবর্তে আমি নিজের কথায় উত্তর দেওয়ার চেষ্টা করব, আশা করি তারা আপনাকে সহায়তা করবে।

  • পরিষেবা একটি ক্রিয়াকলাপের মতো তবে এর কোনও ব্যবহারকারীর ইন্টারফেস নেই। সম্ভবত আপনি উদাহরণস্বরূপ আবহাওয়া আনতে চান তবে আপনি এর জন্য কোনও ফাঁকা কার্যকলাপ তৈরি করবেন না, এর জন্য আপনি একটি পরিষেবা ব্যবহার করবেন।

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

  • অ্যাসিঙ্কটাস্ক একটি বুদ্ধিমান থ্রেড যা ব্যবহার করার পরামর্শ দেওয়া হয়। বুদ্ধিমান যেহেতু এটি এর পদ্ধতিগুলির সাথে সহায়তা করতে পারে এবং ইউআই থ্রেডে চালিত তিনটি পদ্ধতি রয়েছে যা ইউআই উপাদানগুলি আপডেট করা ভাল।

আমি ঘন ঘন পরিষেবাগুলি, অ্যাসিঙ্কটাস্ক ব্যবহার করছি। থ্রেড কম, না মোটেও না, কারণ আমি AsyncTask দিয়ে প্রায় সব কিছু করতে পারি।


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

16
আপনার দুটোই ব্যবহার করা দরকার। আপনি একটি পরিষেবা তৈরি করেন এবং এর ভিতরে আপনি অ্যাসিঙ্কটাস্ক ব্যবহার করেন।
পেন্টিয়াম

4
উপরের উত্তরে যুক্ত করুন, অ্যাসিঙ্কটাস্ক প্রিপেক্সেকিউট (), অনপ্রেসআপসেট (অগ্রগতি ...) অনপোস্টেক্সট (ফলাফল), U ইউআই থ্রেডে চলছে}, ডোইনব্যাকগ্রাউন্ড (প্যারামস ...) background ব্যাকগ্রাউন্ড থ্রেডে চলছে যেহেতু এটি ইউআই থ্রেডে 3 টি পদ্ধতি সরবরাহ করে, ব্যবহারকারীকে ইউআই আপডেট করার জন্য হ্যান্ডলার বা কলব্যাকগুলি ব্যবহার করার বিষয়ে চিন্তা করা উচিত নয়।
স্পুনকারবাবা

11
@ পেন্টিয়াম 10: পরিষেবা + অ্যাসিঙ্কটাস্কের পরিবর্তে, আপনি প্রায়শই ইনটেন্ট সার্ভিস ব্যবহার করতে পারেন
njzk2

11
এছাড়াও লক্ষণীয় যে ডিফল্টরূপে অ্যান্ড্রয়েড পরিষেবাগুলি মূল (ইউআই) থ্রেডে চালিত হয়। যদি আপনার পরিষেবাটি পটভূমিতে কাজ করার প্রয়োজন হয় তবে এটিকে আলাদাভাবে থ্রেডে (বা AsyncTask) স্পষ্টভাবে চালু করা দরকার। অন্যথায় এটি ইউআই প্রতিক্রিয়াশীলতায় বাধা সৃষ্টি করতে পারে এবং অ্যাপ্লিকেশন না করে ত্রুটি সাড়া দেয়। একটি সার্ভিস আর্ট অ্যান্ড্রয়েড মূলত একটি 'অদৃশ্য' এবং 'ক্ষুদ্রতর' ক্রিয়াকলাপ, কোনও 'ব্যাকগ্রাউন্ড' কর্মী নয়।
সিসিজে

23

এটি আপনার প্রশ্নের সহজ উত্তর

সুতা

মৃত্যুদন্ড কার্যকর করার একক যা মূল থ্রেডের "সমান্তরাল" চালায় run এটি একটি গুরুত্বপূর্ণ বিষয়, আপনি এখানে মূল থ্রেড বাদে কোনও থ্রেড থেকে কোনও ইউআই উপাদান আপডেট করতে পারবেন না।

AsyncTask

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

সেবা

উপরের সমস্যাটি সমাধান করুন কারণ এটি ক্রিয়াকলাপ থেকে পৃথকভাবে বাস করে যা এটি চালিয়ে যেতে পারে যাতে কার্যকলাপটি ধ্বংস হওয়ার পরেও এটি চলতে পারে, এটি মেইন থ্রেডে চালিত হয় (এএনআর থেকে সাবধান থাকুন) একটি পটভূমি পরিষেবা ব্যবহার করে (প্রসারিত ইনটেন্স সার্ভিসটি স্বয়ংক্রিয়ভাবে কর্মী থ্রেড তৈরি করে) আপনার জন্য)পরিষেবা ইউআই ছাড়াই কোনও ক্রিয়াকলাপের মতো , দীর্ঘ কাজের জন্য ভাল


4
ক্রিয়াকলাপ জীবনচক্র পদ্ধতিগুলির সাথে সিঙ্ক না হওয়ার কারণে ডিভাইসটি ঘোরানোর সময় আয়ঙ্কটাস্ককে পুনরায় তৈরি করা হবে না।
কপসঅনরোড

4
আপনি অ্যাক্টিভিটি লাইফসাইল হুক এ এসিঙ্কটাস্ক তৈরি করেন এবং আপনি যখন ফোনটি ঘোরান তখন কার্যকলাপটি ধ্বংস হয়ে যায় এবং পুনরায় চালু হয়। অ্যাসিঙ্কটাস্কের প্রিভিয়াস দৃষ্টান্তটি আপনার সবেমাত্র ধ্বংস হওয়া ক্রিয়াকলাপের সাথে সংযুক্ত এবং সেই কারণে আপনি একটি "ফোর্স ক্লোজ" পাবেন তবে আপনিও দেখতে পাবেন কীভাবে অ্যাসিনটাস্কটি আবার ট্রিগার হয়ে উঠছে। আপনি অ্যাসিঙ্কটাস্ক ধরে রাখতে ফ্রেগমেন্টগুলি ব্যবহার করতে পারেন এবং ফ্র্যাগমেন্টে সেটট্রেটাইনইনস্ট্যান্স (সত্য) সেট করতে পারেন যা আপনাকে সহায়তা করবে।
আলেজান্দ্রো সেরেরেট

15

আরও কিছু তথ্য আমি চাই কয়েকদিন আগে কেউ আমাকে বলেছিল:

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

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


9

সংক্ষেপে, জন্য পরিষেবাtime consuming tasks , AsyncTask for short-lived tasks, থ্রেডstandard java construction থ্রেডগুলির জন্য একটি ।


3

বিকাশকারীর দৃষ্টিকোণ থেকে:

থ্রেড : মূল থ্রেডের সমান্তরালভাবে কোডগুলিতে সেটটি কার্যকর করতে ব্যবহৃত হয়। তবে আপনি থ্রেডের ভিতরে ইউআই পরিচালনা করতে পারবেন না। তার জন্য আপনার ব্যবহার করা দরকার Handler। হ্যাডলার থ্রেডের মতো কাজ করে তবে ইউআইও পরিচালনা করতে পারে।

ASyncTask : মূল থ্রেডে আপনি যে কাজগুলি করতে পারবেন না সেগুলি পরিচালনা করার জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, এইচটিটিপি অনুরোধটি খুব ভারী কাজ যা মূল থ্রেডে হ্যান্ডেল করা যায় না, সুতরাং আপনি HTTP অনুরোধটি হ্যান্ডেল করে ASyncTaskএটি ব্যাকগ্রাউন্ডে আপনার মূল থ্রেডের সাথে সমান্তরালভাবে কাজ করে t এটিতে কিছু কলব্যাক পদ্ধতি রয়েছে যা তাদের সাথে সম্পর্কিত হয় are ইভেন্ট নেই।

পরিষেবা : একটি পটভূমি প্রক্রিয়া। এটি নিযুক্ত করা হয় যখন আপনাকে এমন কিছু প্রক্রিয়াজাতকরণ করতে হয় যার সাথে কোনও ইউআই যুক্ত থাকে না।


1
Serviceআপনি ব্যবহার না করা ব্যাকগ্রাউন্ডে চালানো প্রয়োজন হবে না IntentService। আপনি যদি Serviceইউআইথ্রেড থেকে স্ট্যান্ডআর্ট শুরু করেন তবে এটি ইউআইথ্রেডে চলবে।
yshahak

@ আইশাহাক আপনি সঠিক, তবে এখানে আমাদের গভীর সংজ্ঞা দরকার নেই। ব্যবহারকারী কেবল তাদের মধ্যে পার্থক্য জানতে চান।
রাহুল রায়না

হ্যাঁ, তবে এটি সঠিক নয়, Serviceডিফল্ট হিসাবে কোনও পৃথক প্রক্রিয়াতে চলবে না, তবে অন্যান্য উপাদানগুলির সাথে অ্যাপ্লিকেশন প্রক্রিয়াতে। Serviceএটি যে থ্রেডের অভ্যন্তরে থাকে তার পটভূমিতে এটি চালানো আরও ভাল ।
yshahak

উপরোক্ত তিনটিই আবেদন প্রক্রিয়াটির মধ্যে কাজ করে। অ্যাসিঙ্কটাস্কের প্রিএক্সেকিউট () এবং পোস্টএকসেকিউট () পদ্ধতিগুলি ইউআইটিথ্রেড এবং ডোনইনব্যাকগ্রাউন্ডে () এবং অনপ্রোগ্রেস () পটভূমির থ্রেডে কাজ করে। পরিষেবা ব্যাকগ্রাউন্ড থ্রেড এবং থ্রেডেও কাজ করে ব্যাকগ্রাউন্ড থ্রেডেও কাজ করে। তবে হ্যান্ডলার ইউআই থ্রেডে কাজ করে।
রাহুল রায়না

2

পরিষেবাটি দীর্ঘ সময় ব্যয়কারী ক্রিয়াকলাপের মতো তবে অ্যাসিঙ্ক টাস্ক আমাদের দীর্ঘ / পটভূমি ক্রিয়াকলাপ সম্পাদন করতে এবং থ্রেডগুলি পরিচালনা না করে ইউআই থ্রেডে এর ফলাফলটি প্রদর্শন করতে দেয়।

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