কেন, কীভাবে এবং কোন প্যারামিটারগুলি অ্যাসিনটাস্ক <> এ পাস করা হয়েছে , এখানে বিশদ দেখুন । আমি মনে করি এটি সর্বোত্তম ব্যাখ্যা।
গুগলের অ্যান্ড্রয়েড ডকুমেন্টেশন বলে যে:
একটি অ্যাসিঙ্ক্রোনাস টাস্ক 3 জেনেরিক ধরণের দ্বারা সংজ্ঞায়িত করা হয়, যাকে বলা হয় প্যারামস, প্রগ্রেস এবং রেজাল্ট, এবং 4 টি ধাপ, যা প্রিপেক্সেক্সট, ডোজইনব্যাকগ্রাউন্ড, অনপ্রসেসআপডেট এবং অনপোস্টএক্সেকিউট নামে পরিচিত।
অ্যাসিঙ্কটাসকের জেনেরিক প্রকারগুলি:
একটি অ্যাসিক্রোনাস টাস্ক দ্বারা ব্যবহৃত তিন ধরণের নিম্নলিখিত:
প্যারামগুলি, কার্যকর করার পরে টাস্কে পাঠানো পরামিতিগুলির ধরণ। অগ্রগতি, পটভূমি গণনার সময় প্রকাশিত অগ্রগতির ইউনিটগুলির ধরণ। ফলাফল, পটভূমি গণনার ফলাফলের ধরণ। সবসময় সবসময় একটি অ্যাসিক্রোনাস টাস্ক দ্বারা ব্যবহৃত হয় না। কোনও প্রকারকে অব্যবহৃত হিসাবে চিহ্নিত করতে কেবল অকার্যকর টাইপটি ব্যবহার করুন:
private class MyTask extends AsyncTask<Void, Void, Void> { ... }
আপনি আরও উল্লেখ করতে পারেন: http://developer.android.com/references/android/os/AsyncTask.html
অথবা সংকর-গণেশের ব্লগটি উল্লেখ করে আপনি AsyncTask এর ভূমিকা কী তা সাফ করতে পারেন
আচ্ছা একটি সাধারণ অ্যাসিঙ্কটাস্ক শ্রেণীর কাঠামো এর মতো হয়:
private class MyTask extends AsyncTask<X, Y, Z>
protected void onPreExecute(){
}
নতুন থ্রেড শুরু করার আগে এই পদ্ধতিটি কার্যকর করা হয়। কোনও ইনপুট / আউটপুট মান নেই, সুতরাং কেবল ভেরিয়েবলগুলি শুরু করুন বা আপনার যা করা দরকার মনে করুন।
protected Z doInBackground(X...x){
}
অ্যাসিঙ্কটাস্ক ক্লাসের সবচেয়ে গুরুত্বপূর্ণ পদ্ধতি। আপনি মূল জিনিসটি থেকে আলাদা থ্রেডে পটভূমিতে আপনি করতে চান এমন সমস্ত জিনিস এখানে রাখতে হবে। এখানে আমাদের ইনপুট মান হিসাবে "এক্স" টাইপ থেকে অবজেক্টগুলির একটি অ্যারে রয়েছে (আপনি কি শিরোনামে দেখছেন? আমাদের কাছে "... অ্যাসিঙ্কটাস্ক প্রসারিত হয়েছে" এটি ইনপুট প্যারামিটারগুলির টাইপস) এবং টাইপ থেকে কোনও অবজেক্ট ফেরত দেয় "z"।
সুরক্ষিত শূন্যপরিবর্তিত অগ্রযাত্রা (Y y) {
} এই পদ্ধতিটি প্রকাশিত প্রোগ্রেস (y) পদ্ধতিটি ব্যবহার করে ডাকা হয় এবং এটি আপনি যখন প্রধান পর্দায় কোনও অগ্রগতি বা তথ্য প্রদর্শন করতে চান এমন একটি প্রগতি বারের মতো আপনি ব্যাকগ্রাউন্ডে করছেন অপারেশনটির অগ্রগতি দেখানোর জন্য ব্যবহৃত হয়।
পোষ্টএক্সেকিউট (জেড z) protected রক্ষিত শূন্যতা {
Method ব্যাকগ্রাউন্ডে অপারেশন হয়ে যাওয়ার পরে এই পদ্ধতিটি বলা হয়। ইনপুট প্যারামিটার হিসাবে আপনি doInBackground পদ্ধতির আউটপুট প্যারামিটার পাবেন।
এক্স, ওয়াই এবং জেড ধরণের কী হবে?
আপনি উপরের কাঠামো থেকে অনুমান করতে পারেন:
X – The type of the input variables value you want to set to the background process. This can be an array of objects.
Y – The type of the objects you are going to enter in the onProgressUpdate method.
Z – The type of the result from the operations you have done in the background process.
বাইরের শ্রেণি থেকে কীভাবে আমরা এই কাজটিকে কল করব? কেবলমাত্র দুটি লাইন দিয়ে:
MyTask myTask = new MyTask();
myTask.execute(x);
যেখানে x হ'ল এক্স টাইপের ইনপুট প্যারামিটার Where
আমাদের কাজটি একবার চালিয়ে গেলে, আমরা এর অবস্থানটি "বাইরে থেকে" খুঁজে পেতে পারি। "GetStatus ()" পদ্ধতি ব্যবহার করে।
myTask.getStatus (); এবং আমরা নিম্নলিখিত স্থিতি পেতে পারি:
চলমান - ইঙ্গিত দেয় যে টাস্কটি চলছে।
পেন্ডিং - ইঙ্গিত দেয় যে টাস্কটি এখনও কার্যকর করা হয়নি।
সমাপ্ত - ইঙ্গিত করে যে পোস্টপ্যাক্সেকুট (জেড) শেষ হয়েছে।
AsyncTask ব্যবহার সম্পর্কে ইঙ্গিত
প্রি এক্সেক্সট, ডোইনব্যাকগ্রাউন্ড এবং অনপস্টএক্সিকিউটে ম্যানুয়ালি পদ্ধতিগুলিকে কল করবেন না। এটি স্বয়ংক্রিয়ভাবে সিস্টেম দ্বারা সম্পন্ন হয়।
আপনি অন্য একটি অ্যাসিঙ্কটাস্ক বা থ্রেডের মধ্যে অ্যাসিঙ্কটাস্ক কল করতে পারবেন না। কার্যকর করার কলটি ইউআই থ্রেডে করতে হবে।
পোস্টপেক্সেকিউট পদ্ধতিটি ইউআই থ্রেডে কার্যকর করা হয় (এখানে আপনি অন্য একটি এসিঙ্কটাস্ক কল করতে পারেন!)।
টাস্কটির ইনপুট পরামিতিগুলি কোনও অবজেক্ট অ্যারে হতে পারে, আপনি যেভাবে অবজেক্ট এবং প্রকারটি চান তা রাখতে পারেন।