Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Android

एंड्रॉइड में निष्पादन AsyncTask को कैसे रद्द करें?

<घंटा/>

उदाहरण में आने से पहले, हमें पता होना चाहिए कि Android में AsyncTask क्या है। AsyncTask बैकग्राउंड थ्रेड में ऑपरेशन/एक्शन करने जा रहा है और मेनथ्रेड पर अपडेट करेगा। बैकग्राउंड थ्रेड पर बैकग्राउंड ऑपरेशन करते समय, उपयोगकर्ता निम्नलिखित कोड का उपयोग करके संचालन रद्द कर सकता है -

AsynTaskExample mAsyncTask =new AsyncTaskExample();mAsyncTask.cancel(true);

यह उदाहरण दर्शाता है कि एंड्रॉइड में एक निष्पादन AsyncTask को कैसे रद्द किया जाए।

चरण 1 - एंड्रॉइड स्टूडियो में एक नया प्रोजेक्ट बनाएं, फाइल ⇒ न्यू प्रोजेक्ट पर जाएं और एक नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें।

चरण 2 - निम्न कोड को res/layout/activity_main.xml में जोड़ें।

 <बटन एंड्रॉइड:आईडी ="@ + आईडी / एसिंक टास्क" एंड्रॉइड:टेक्स्ट ="डाउनलोड" एंड्रॉइड:लेआउट_विड्थ ="रैप_कंटेंट" एंड्रॉइड:लेआउट_हाइट ="रैप_कंटेंट" /> 

उपरोक्त कोड में जब आप बटन पर क्लिक करते हैं तो यह इंटरनेट स्रोत से छवि डाउनलोड करने और इमेजव्यू में संलग्न करने के लिए जा रहा है।

चरण 3 - निम्न कोड को src/MainActivity.java

में जोड़ें <पूर्व>पैकेज com.example.andy.myapplication;import android.app.ProgressDialog;import android.content.DialogInterface;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 android.widget.Toast;import java.io.IOException; जावा आयात करें। इनपुटस्ट्रीम =शून्य है; बिटमैप बीएमआईएमजी =शून्य; छवि दृश्य छवि दृश्य =शून्य; AsyncTaskExample asyncTask =null; प्रोग्रेसडायलॉग पी; @Override संरक्षित शून्य पर क्रिएट (बंडल सेव किया गया इंस्टेंसस्टेट) {super.onCreate (savedInstanceState); setContentView(R.layout.activity_main); बटन बटन =findViewById (R.id.asyncTask); imageView =findViewById (R.id.image); बटन.सेटऑनक्लिक लिस्टनर (नया व्यू। ऑनक्लिक लिस्टनर () {@ ओवरराइड पब्लिक वॉयड ऑनक्लिक (व्यू वी) {asyncTask =नया AsyncTaskExample (); asyncTask.execute ("https://www.tutorialspoint.com/images/tp-logo-diamond) .png"); } }); } निजी वर्ग AsyncTaskExample AsyncTask को बढ़ाता है {@Override संरक्षित शून्य onPreExecute() {super.onPreExecute(); पी =नया प्रोग्रेसडिअलॉग (मेनएक्टिविटी। यह); p.setMessage ("कृपया प्रतीक्षा करें ... यह डाउनलोड हो रहा है"); p.setIndeterminate(true); पी.सेट रद्द करने योग्य (सच); p.setOnCancelListener (नया डायलॉगइंटरफेस। ऑनकैंसल लिस्टनर () {@ ओवरराइड सार्वजनिक शून्य को रद्द करें (डायलॉगइंटरफेस डायलॉग) {asyncTask.cancel (सच); Toast.makeText (MainActivity.this,"AsyncTask बंद कर दिया गया है", Toast.LENGTH_LONG)। शो (); } }); पी.शो (); } @Override संरक्षित बिटमैप doInBackground (स्ट्रिंग... स्ट्रिंग्स) {कोशिश करें {Thread.sleep (10000); } कैच (इंटरप्टेड एक्सेप्शन ई) { ई.प्रिंटस्टैकट्रेस (); } 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 (बिटमैप); } और { पी.शो (); } } }}

चरण 4 -मेनिफेस्ट.xml में निम्न कोड जोड़ें

 <उपयोग-अनुमति 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 मोबाइल डिवाइस को अपने कंप्यूटर से कनेक्ट कर लिया है। एंड्रॉइड स्टूडियो से ऐप चलाने के लिए, अपने प्रोजेक्ट की गतिविधि फ़ाइलों में से एक खोलें और टूलबार से रन आइकन पर क्लिक करें। एक विकल्प के रूप में अपने मोबाइल डिवाइस का चयन करें और फिर अपने मोबाइल डिवाइस की जांच करें जो आपकी डिफ़ॉल्ट स्क्रीन प्रदर्शित करेगा -

एंड्रॉइड में निष्पादन AsyncTask को कैसे रद्द करें?

जब आप उपरोक्त बटन पर क्लिक करते हैं, तो यह एक प्रगति पट्टी शुरू करेगा, प्रगति पट्टी के बजाय किसी भी स्थान पर क्लिक करें यह निम्न स्क्रीन दिखाएगा।

एंड्रॉइड में निष्पादन AsyncTask को कैसे रद्द करें?

उपरोक्त स्क्रीन स्पष्ट रूप से दिखाती है कि async कार्य बंद हो गया है और छवि अब इंटरनेट स्रोत से डाउनलोड हो गई है।

एंड्रॉइड में निष्पादन AsyncTask को कैसे रद्द करें?

यदि आप async कार्य को नहीं रोकते हैं तो यह ऊपर दिखाए गए अनुसार एक छवि डाउनलोड करेगा


  1. एंड्रॉइड में ArrayBlockingQueue को कैसे साफ़ करें?

    उदाहरण में आने से पहले, हमें पता होना चाहिए कि एरेब्लॉकिंग क्यू क्या है, यह फीफो तरीके से यात्रा करता है और सबसे लंबे समय तक रहने वाला पहला तत्व और कतार का अंतिम तत्व समय की छोटी अवधि में रहने वाला है। यह उदाहरण एंड्रॉइड में ArrayBlockingQueue को कैसे साफ़ करें के बारे में प्रदर्शित करता है चरण 1

  1. एंड्रॉइड में AsyncTask थ्रेड को कैसे रोकें?

    यह उदाहरण दर्शाता है कि मैं Android में AsyncTask थ्रेड को कैसे रोकूं। चरण 1 - एंड्रॉइड स्टूडियो में एक नया प्रोजेक्ट बनाएं, फाइल ⇒ न्यू प्रोजेक्ट पर जाएं और एक नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें। चरण 2 - निम्न कोड को res/layout/activity_main.xml में जोड़ें। <?xml version="1.

  1. Android में AsyncTask के लिए टाइमआउट कैसे सेट करें?

    यह उदाहरण दर्शाता है कि मैं एंड्रॉइड में AsyncTask के लिए टाइमआउट कैसे सेट करूं। चरण 1 - एंड्रॉइड स्टूडियो में एक नया प्रोजेक्ट बनाएं, फाइल ⇒ न्यू प्रोजेक्ट पर जाएं और एक नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें। चरण 2 - निम्न कोड को res/layout/activity_main.xml में जोड़ें। चरण 3 - निम