android - एंड्रॉइड AsyncTask उदाहरण और स्पष्टीकरण



android-asynctask (1)

इस प्रश्न का उत्तर यहां दिया गया है:

मैं अपने ऐप में एक AsyncTask का उपयोग करना चाहता हूं लेकिन मुझे कोड स्निपेट खोजने में परेशानी हो रही है, जिसमें चीजें कैसे काम करती हैं, इसकी एक सरल व्याख्या के साथ। मैं सिर्फ कुछ ऐसा करना चाहता हूं जो मुझे documentation या क्यू और फिर से बहुत से बिना छेड़छाड़ किए बिना जल्दी से गति प्राप्त करने में मदद करे।


AsyncTask थ्रेड जैसे अधिक जटिल तरीकों से निपटने के बिना एंड्रॉइड में समांतरता को लागू करने का सबसे आसान तरीका है। हालांकि यह यूआई थ्रेड के साथ समांतरता का मूल स्तर प्रदान करता है, लेकिन इसका उपयोग लंबे परिचालनों के लिए नहीं किया जाना चाहिए (कहें, 2 सेकंड से अधिक नहीं)।

AsyncTask में कार्य करने के चार तरीके हैं

  • onPreExecute()
  • doInBackground()
  • onProgressUpdate()
  • onPostExecute()

जहां doInBackground() सबसे महत्वपूर्ण है, जहां पृष्ठभूमि doInBackground() जाती हैं।

कोड:

स्पष्टीकरण के साथ एक कंकाल कोड रूपरेखा यहां दी गई है:

public class AsyncTaskTestActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);  

        // This starts the AsyncTask
        // Doesn't need to be in onCreate()
        new MyTask().execute("my string parameter");
    }

    // Here is the AsyncTask class:
    //
    // AsyncTask<Params, Progress, Result>.
    //    Params – the type (Object/primitive) you pass to the AsyncTask from .execute() 
    //    Progress – the type that gets passed to onProgressUpdate()
    //    Result – the type returns from doInBackground()
    // Any of them can be String, Integer, Void, etc. 

    private class MyTask extends AsyncTask<String, Integer, String> {

        // Runs in UI before background thread is called
        @Override
        protected void onPreExecute() {
            super.onPreExecute();

            // Do something like display a progress bar
        }

        // This is run in a background thread
        @Override
        protected String doInBackground(String... params) {
            // get the string from params, which is an array
            String myString = params[0];

            // Do something that takes a long time, for example:
            for (int i = 0; i <= 100; i++) {

                // Do things

                // Call this to update your progress
                publishProgress(i);
            }

            return "this string is passed to onPostExecute";
        }

        // This is called from background thread but runs in UI
        @Override
        protected void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values);

            // Do things like update the progress bar
        }

        // This runs in UI when background thread finishes
        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);

            // Do things like hide the progress bar or change a TextView
        }
    }
}

प्रवाह आरेख:

यहां समझाया गया है कि सभी पैरामीटर और प्रकार कहां जा रहे हैं:

अन्य सहायक लिंक:





android-asynctask