উত্তর:
গুগলের অ্যান্ড্রয়েড ডকুমেন্টেশন বলে যে:
একটি অ্যাসিঙ্ক্রোনাস টাস্কটি 3 জেনেরিক ধরণের দ্বারা সংজ্ঞায়িত করা হয়, যাকে বলা হয় প্যারামস, প্রগ্রেস এবং রেজাল্ট, এবং 4 টি ধাপ, যা প্রিপেক্সেক্সট, ডোজইনব্যাকগ্রাউন্ড, অনপ্রসেসআপডেট এবং অনপোস্টএক্সেকিউট নামে পরিচিত।
অ্যাসিঙ্কটাসকের জেনেরিক প্রকারগুলি:
একটি অ্যাসিক্রোনাস টাস্ক দ্বারা ব্যবহৃত তিন ধরণের নিম্নলিখিত:
Params, the type of the parameters sent to the task upon execution.
Progress, the type of the progress units published during the background computation.
Result, the type of the result of the background computation.
সবসময় সবসময় একটি অ্যাসিক্রোনাস টাস্ক দ্বারা ব্যবহৃত হয় না। কোনও প্রকারকে অব্যবহৃত হিসাবে চিহ্নিত করতে কেবল অকার্যকর টাইপটি ব্যবহার করুন:
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"।
protected void onProgressUpdate(Y y){
}
এই পদ্ধতিটি প্রকাশিত প্রোগ্রেস (y) পদ্ধতিটি ব্যবহার করে ডাকা হয় এবং এটি আপনি যখন প্রধান পর্দায় কোনও অগ্রগতি বা তথ্য প্রদর্শন করতে চান এমন একটি প্রগতি বারের মতো আপনি ব্যাকগ্রাউন্ডে করছেন অপারেশনটির অগ্রগতি দেখানোর জন্য ব্যবহৃত হয়।
protected void onPostExecute(Z z){
}
ব্যাকগ্রাউন্ডে অপারেশন হয়ে যাওয়ার পরে এই পদ্ধতিটি বলা হয়। ইনপুট প্যারামিটার হিসাবে আপনি 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();
এবং আমরা নিম্নলিখিত স্থিতি পেতে পারি:
চলমান - ইঙ্গিত দেয় যে টাস্কটি চলছে।
পেন্ডিং - ইঙ্গিত দেয় যে টাস্কটি এখনও কার্যকর করা হয়নি।
সমাপ্ত - চিহ্নিত করে onPostExecute (z) সমাপ্ত হয়েছে।
AsyncTask ব্যবহার সম্পর্কে ইঙ্গিত
প্রি এক্সেক্সট, ডোইনব্যাকগ্রাউন্ড এবং অনপস্টএক্সিকিউটে ম্যানুয়ালি পদ্ধতিগুলিকে কল করবেন না। এটি স্বয়ংক্রিয়ভাবে সিস্টেম দ্বারা সম্পন্ন হয়।
আপনি অন্য একটি অ্যাসিঙ্কটাস্ক বা থ্রেডের মধ্যে অ্যাসিঙ্কটাস্ক কল করতে পারবেন না। কার্যকর করার কলটি ইউআই থ্রেডে করতে হবে।
পোস্টপেক্সেকিউট পদ্ধতিটি ইউআই থ্রেডে কার্যকর করা হয় (এখানে আপনি অন্য একটি এসিঙ্কটাস্ক কল করতে পারেন!)।
টাস্কটির ইনপুট পরামিতিগুলি কোনও অবজেক্ট অ্যারে হতে পারে, আপনি যেভাবে অবজেক্ট এবং প্রকার চান তা রাখতে পারেন।
WeakAsyncTask
পাশাপাশি
একটি AsyncTask
ব্যাকগ্রাউন্ড টাস্ক যা ব্যাকগ্রাউন্ড থ্রেডে চলে। এটি একটি ইনপুট নেয় , অগ্রগতি সম্পাদন করে এবং আউটপুট দেয় ।
অর্থাত
AsyncTask<Input,Progress,Output>
।
আমার মতে বিভ্রান্তির মূল উত্স তখন আসে যখন আমরা প্যারামিটারগুলিকে মুখস্ত করার চেষ্টা করি AsyncTask
।
কীটি মুখস্থ করবেন না ।
আপনি যদি আপনার কাজটি সত্যিই করা দরকার তা ভিজ্যুয়ালাইজ করতে পারেন AsyncTask
তবে সঠিক স্বাক্ষর সহ লেখার জন্য এটি একটি পিষ্টক হবে।
আপনার ইনপুট , অগ্রগতি এবং আউটপুট কী তা খুঁজে বের করুন এবং আপনি যেতে ভাল হবেন।
doInBackgound()
পদ্ধতি একটি সবচেয়ে গুরুত্বপূর্ণ পদ্ধতি AsyncTask
কারণ
AsyncTask
পরামিতিগুলির সাথে পরিবর্তিত হয় ।সুতরাং আসুন সম্পর্কটি দেখতে দিন
doInBackground()
এবংonPostExecute()
,onProgressUpdate()
সম্পর্কিত হয়
আমাকে কোডটি দেখান
তাহলে আমি ডাউনলোড টাস্কের জন্য কোডটি কীভাবে লিখব?
DownloadTask extends AsyncTask<String,Integer,String>{
@Override
public void onPreExecute()
{}
@Override
public String doInbackGround(String... params)
{
// Download code
int downloadPerc = // calculate that
publish(downloadPerc);
return "Download Success";
}
@Override
public void onPostExecute(String result)
{
super.onPostExecute(result);
}
@Override
public void onProgressUpdate(Integer... params)
{
// show in spinner, access UI elements
}
}
কীভাবে আপনি এই টাস্কটি চালাবেন
new DownLoadTask().execute("Paradise.mp3");
// show in spinner, access UI elements
কেবলমাত্র onProgressUpdate(...)
:)
নিম্নলিখিত লিঙ্কগুলি দেখুন:
আপনি তিনটির বেশি আর্গুমেন্ট পাস করতে পারবেন না, যদি আপনি কেবল 1 টি যুক্তি পাস করতে চান তবে অন্য দুটি আর্গুমেন্টের জন্য শূন্যতা ব্যবহার করুন।
1. private class DownloadFilesTask extends AsyncTask<URL, Integer, Long>
2. protected class InitTask extends AsyncTask<Context, Integer, Integer>
একটি অ্যাসিঙ্ক্রোনাস টাস্ক এমন একটি গণনা দ্বারা সংজ্ঞায়িত করা হয় যা একটি পটভূমি থ্রেডে চলে এবং যার ফলাফলটি ইউআই থ্রেডে প্রকাশিত হয়। একটি অ্যাসিঙ্ক্রোনাস টাস্কটি 3 জেনেরিক ধরণের দ্বারা সংজ্ঞায়িত করা হয়, যাকে বলা হয় প্যারামস, প্রগ্রেস এবং রেজাল্ট, এবং 4 টি ধাপ, যা প্রিপেক্সেক্সট, ডোজইনব্যাকগ্রাউন্ড, অনপ্রসেসআপডেট এবং অনপোস্টএক্সেকিউট নামে পরিচিত।
KPBird
সংক্ষেপে, অ্যাসিঙ্কটাস্কে 3 টি পরামিতি রয়েছে
ডোইনব্যাকগ্রাউন্ডে ইনপুট ব্যবহারের জন্য প্যারামিটারগুলি (স্ট্রিং ... প্যারাম)
অনগ্রোগ্রেস আপডেটে স্ট্রিংয়ের ...
অনপোস্টএক্সকিউটে ফলাফল ব্যবহারের জন্য প্যারামিটারগুলি (স্ট্রিং ... ফলাফল)
দ্রষ্টব্য: - [আপনার প্রয়োজনীয়তার উপর নির্ভর করে পরামিতিগুলির ধরণ পৃথক হতে পারে]