उदाहरण में आने से पहले, हमें यह जानना चाहिए कि, asyncTask क्या है। AsyncTask बैकग्राउंड थ्रेड में ऑपरेशन/एक्शन करने जा रहा है और मेनथ्रेड पर अपडेट करेगा। यहाँ Android AsyncTask समानांतर निष्पादन के बारे में सरल समाधान दिया गया है।
चरण 1 - एंड्रॉइड स्टूडियो में एक नया प्रोजेक्ट बनाएं, फाइल ⇒ न्यू प्रोजेक्ट पर जाएं और एक नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें।
चरण 2 − निम्न कोड को res/layout/activity_main.xml में जोड़ें ।
<बटन एंड्रॉइड:आईडी ="@ + आईडी / एसिंक टास्क" एंड्रॉइड:टेक्स्ट ="डाउनलोड" एंड्रॉइड:लेआउट_विड्थ ="रैप_कंटेंट" एंड्रॉइड:लेआउट_हाइट ="रैप_कंटेंट" />
उपरोक्त कोड में हमने दो इमेजव्यू और एक बटन घोषित किया है, जब उपयोगकर्ता बटन पर क्लिक करता है तो यह विभिन्न इंटरनेट स्रोतों से दो छवियों को डाउनलोड करने और इमेजव्यू में संलग्न करने के लिए जाता है।
चरण 3 - निम्न कोड को src/MainActivity.java
में जोड़ें <पूर्व>पैकेज com.example.andy.myapplication;import android.app.ProgressDialog;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.AsyncTask;import android.os.Bundle;import android. support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.ImageView;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection; आयात java.net.URL; सार्वजनिक वर्ग MainActivity AppCompatActivity को बढ़ाता है {URL ImageUrl =null; इनपुटस्ट्रीम =शून्य है; बिटमैप बीएमआईएमजी =शून्य; छवि दृश्य छवि दृश्य =शून्य; ImageView imageView2 =अशक्त; AsyncTaskExample asyncTask =null; AsyncTaskExample2 asyncTask2 =अशक्त; प्रोग्रेसडायलॉग पी; @Override संरक्षित शून्य पर क्रिएट (बंडल सेव किया गया इंस्टेंसस्टेट) {super.onCreate (savedInstanceState); setContentView(R.layout.activity_main); बटन बटन =findViewById (R.id.asyncTask); imageView =findViewById (R.id.image); imageView2 =findViewById (R.id.image2); बटन.सेटऑनक्लिक लिस्टनर (नया व्यू। ऑनक्लिक लिस्टनर () { @ ओवरराइड पब्लिक वॉयड ऑनक्लिक (व्यू वी) { asyncTask2 =नया AsyncTaskExample2 (); asyncTask2.executeOnExecutor (AsyncTask.THREAD_POOL_EXECUTOR, "https://www.tutorialspoint.com/cprogramming/images/ /logo.png"); asyncTask =नया AsyncTaskExample (); asyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, "https://www.tutorialspoint.com/images/tp-logo-diamond.png"); }}); } निजी वर्ग AsyncTaskExample का विस्तार AsyncTask<स्ट्रिंग, स्ट्रिंग, बिटमैप> {@Override संरक्षित शून्य onPreExecute() {super.onPreExecute(); पी =नया प्रोग्रेसडिअलॉग (मेनएक्टिविटी। यह); p.setMessage ("कृपया प्रतीक्षा करें ... यह डाउनलोड हो रहा है"); p.setIndeterminate(true); पी.सेट रद्द करने योग्य (झूठा); पी.शो (); } @Override संरक्षित बिटमैप doInBackground (स्ट्रिंग... स्ट्रिंग्स) {कोशिश करें {ImageUrl =नया URL (स्ट्रिंग्स [0]); HttpURLConnection conn =(HttpURLConnection) ImageUrl .openConnection (); conn.setDoInput (सच); conn.connect (); है =con.getInputStream (); बिटमैप फ़ैक्टरी। विकल्प विकल्प =नया बिटमैप फ़ैक्टरी। विकल्प (); options.inPreferredConfig =Bitmap.Config.RGB_565; bmImg =BitmapFactory.decodeStream (है, अशक्त, विकल्प); } कैच (IOException e) { e.printStackTrace (); } बीएमआईएमजी वापसी; } @Override संरक्षित शून्य onPostExecute (बिटमैप बिटमैप) {super.onPostExecute (बिटमैप); अगर (छवि दृश्य! =शून्य) {p.hide (); imageView.setImageBitmap (बिटमैप); } और { पी.शो (); } } } निजी वर्ग AsyncTaskExample2 AsyncTask का विस्तार करता है <स्ट्रिंग, स्ट्रिंग, बिटमैप> {@ ओवरराइड संरक्षित बिटमैप doInBackground (स्ट्रिंग ... स्ट्रिंग्स) {कोशिश करें {ImageUrl =नया URL (स्ट्रिंग्स [0]); HttpURLConnection conn =(HttpURLConnection) ImageUrl .openConnection (); conn.setDoInput (सच); conn.connect (); है =con.getInputStream (); बिटमैप फ़ैक्टरी। विकल्प विकल्प =नया बिटमैप फ़ैक्टरी। विकल्प (); options.inPreferredConfig =Bitmap.Config.RGB_565; bmImg =BitmapFactory.decodeStream (है, अशक्त, विकल्प); } कैच (IOException e) { e.printStackTrace (); } बीएमआईएमजी वापसी; } @Override संरक्षित शून्य onPostExecute (बिटमैप बिटमैप) {super.onPostExecute (बिटमैप); अगर (imageView2! =शून्य) {imageView2.setImageBitmap (बिटमैप); } और { } } }}उपरोक्त कोड में हमने दो या दो से अधिक aynctask चलाने के लिए excuteOnExcutor () दिया है। एंड्रॉइड समानांतर चलाने के लिए अधिकतम पांच किसी भी कार्य का समर्थन करने जा रहा है।
चरण 4 - निम्नलिखित कोड को मेनिफेस्ट.एक्सएमएल में जोड़ें
<उपयोग-अनुमति android:name ="android.permission.INTERNET"/> <एप्लिकेशन android:allowBackup ="true" android:icon ="@mipmap/ic_launcher" android:label ="@string/app_name "एंड्रॉइड:राउंडआईकॉन =" @ मिपमैप / आईसी_लॉन्चर_राउंड "एंड्रॉइड:सपोर्ट आरटीएल ="ट्रू" एंड्रॉइड:थीम ="@ स्टाइल / ऐपथीम"> <गतिविधि एंड्रॉइड:नाम ="। मेनएक्टिविटी"> <इरादा-फिल्टर> <कार्रवाई एंड्रॉइड:नाम ="android.intent.action.MAIN" /> <श्रेणी android:name ="android.intent.category.LAUNCHER" />
उपरोक्त कोड में हमने इंटरनेट स्रोत से छवि डाउनलोड करने के लिए इंटरनेट की अनुमति दी है।
आइए अपना एप्लिकेशन चलाने का प्रयास करें। मुझे लगता है कि आपने अपने वास्तविक Android मोबाइल डिवाइस को अपने कंप्यूटर से कनेक्ट कर लिया है। एंड्रॉइड स्टूडियो से ऐप चलाने के लिए, अपने प्रोजेक्ट की गतिविधि फ़ाइलों में से एक को खोलें और रन एक्लिप्स रन पर क्लिक करें टूलबार से आइकन। एक विकल्प के रूप में अपने मोबाइल डिवाइस का चयन करें और फिर अपने मोबाइल डिवाइस की जांच करें जो आपकी डिफ़ॉल्ट स्क्रीन प्रदर्शित करेगा -
जब उपयोगकर्ता बटन पर क्लिक करता है, तो यह नीचे दिखाए गए अनुसार प्रगति पट्टी का उपयोग करके इंटरनेट स्रोत से छवि डाउनलोड करेगा -
यह दो छवियों को समानांतर डाउनलोड करेगा और नीचे दिखाए अनुसार प्रदर्शित करेगा -