যদি আমরা উত্স কোডটি লক্ষ্য করি তবে আমরা দেখতে পাবো AsyncTaskএবং Handlerজাভাতে খাঁটিভাবে লেখা আছে। (যদিও কিছু ব্যতিক্রম আছে। তবে এটি কোনও গুরুত্বপূর্ণ বিষয় নয়)
সুতরাং AsyncTaskবা কোন জাদু নেই Handler। এই ক্লাসগুলি বিকাশকারী হিসাবে আমাদের জীবনকে আরও সহজ করে তোলে।
উদাহরণস্বরূপ: প্রোগ্রাম এ-তে কল ক পদ্ধতি যদি (), পদ্ধতি এ () প্রোগ্রাম এ এর সাথে আলাদা থ্রেডে চলতে পারে তবে আমরা নিম্নলিখিত কোডের মাধ্যমে সহজেই যাচাই করতে পারি:
Thread t = Thread.currentThread();
int id = t.getId();
কিছু কাজের জন্য আমাদের কেন একটি নতুন থ্রেড ব্যবহার করা উচিত? আপনি এটির জন্য গুগল করতে পারেন। অনেকগুলি কারণ, যেমন: ভারী উত্তোলন, দীর্ঘকালীন কাজ।
সুতরাং, মধ্যে পার্থক্য কি কি Thread, AsyncTaskএবং Handler?
AsyncTaskএবং Handlerজাভাতে লেখা হয় (অভ্যন্তরীণভাবে তারা একটি ব্যবহার করে Thread), তাই আমরা যা করতে পারি Handlerবা যা করতে পারি তা আমরা খুব বেশি AsyncTaskব্যবহার করে অর্জন করতে পারি Thread।
কি করতে Handlerএবং AsyncTaskসত্যিই সাহায্য করে?
সর্বাধিক সুস্পষ্ট কারণ হ'ল কলার থ্রেড এবং কর্মী থ্রেডের মধ্যে যোগাযোগ। ( কলার থ্রেড : একটি থ্রেড যা কর্মী থ্রেডকে কিছু কার্য সম্পাদন করতে ডাকে A কলার থ্রেডটি অগত্যা ইউআই থ্রেড হতে হবে না)। অবশ্যই, আমরা অন্যভাবে দুটি থ্রেডের মধ্যে যোগাযোগ করতে পারি, তবে থ্রেড সুরক্ষার কারণে অনেকগুলি অসুবিধা (এবং বিপদ) রয়েছে)
এজন্য আমাদের ব্যবহার করা উচিত Handlerএবং AsyncTask। এই ক্লাসগুলি আমাদের বেশিরভাগ কাজ করে, কোন পদ্ধতিগুলি ওভাররাইড করা উচিত তা কেবল আমাদের জানতে হবে।
Handlerএবং এর মধ্যে পার্থক্য AsyncTask: কলার থ্রেডটিAsyncTask যখন কোনও ইউআই থ্রেড হয় তখন ব্যবহার করুন । অ্যান্ড্রয়েড ডকুমেন্ট এটি বলে:
অ্যাসিঙ্কটাস্ক ইউআই থ্রেডটির যথাযথ এবং সহজ ব্যবহার সক্ষম করে। এই শ্রেণিটি পটভূমি ক্রিয়াকলাপ সম্পাদন করতে এবং থ্রেড এবং / অথবা হ্যান্ডলারগুলি পরিচালনা না করে ইউআই থ্রেডে ফলাফল প্রকাশের অনুমতি দেয়
আমি দুটি বিষয়কে গুরুত্ব দিতে চাই:
1) ইউআই থ্রেডের সহজ ব্যবহার (সুতরাং, কলার থ্রেড যখন ইউআই থ্রেড হয় তখন ব্যবহার করুন)।
2) হ্যান্ডলারদের কারসাজির দরকার নেই। (অর্থ: আপনি অ্যাসিঙ্কটাস্কের পরিবর্তে হ্যান্ডলারটি ব্যবহার করতে পারেন, তবে অ্যাসিঙ্কটাস্ক একটি সহজ বিকল্প)।
এই পোস্টে অনেক কিছুই আমি এখনও বলিনি, উদাহরণস্বরূপ: ইউআই থ্রেড কী, বা কেন এটি সহজ। আপনার অবশ্যই প্রতিটি শ্রেণীর পিছনে কিছু পদ্ধতি অবশ্যই জানতে হবে এবং এটি ব্যবহার করতে হবে, এর কারণটি আপনি পুরোপুরি বুঝতে পারবেন।
@: আপনি যখন অ্যান্ড্রয়েড ডকুমেন্টটি পড়বেন, আপনি দেখতে পাবেন:
হ্যান্ডলার আপনাকে কোনও থ্রেডের মেসেজকুইয়ের সাথে সম্পর্কিত বার্তা এবং চলমানযোগ্য বস্তু প্রেরণ এবং প্রক্রিয়া করার অনুমতি দেয়
এই বিবরণটি প্রথমে অদ্ভুত বলে মনে হতে পারে। আমাদের কেবল এটি বুঝতে হবে যে প্রতিটি থ্রেডের প্রতিটি ম্যাসেজের সারি রয়েছে (করণীয় তালিকার মতো), এবং থ্রেড প্রতিটি বার্তা গ্রহণ করবে এবং বার্তা সারিটি খালি না হওয়া অবধি এটি করবে (ঠিক যেমন আমরা আমাদের কাজ শেষ করে বিছানায় যাব)। সুতরাং, Handlerযোগাযোগ করার সময়, এটি কেবল কলার থ্রেডকে একটি বার্তা দেয় এবং এটি প্রক্রিয়া করার জন্য অপেক্ষা করবে।
জটিল? কেবল মনে রাখবেন যে Handlerকলার থ্রেডের সাথে নিরাপদে যোগাযোগ করতে পারে।