2010-11-01 15 views
5

मैं एक AsyncTask जिसमें मैं onPreExecute में एक ProgressDialog दिखाने के है, और onPostExecute में फिर से छुपाने के लिए, की तरहरद्द AsyncTask जब उपयोगकर्ता वापस प्रेस बटन

final class UploadTask extends AsyncTask { 
    ProgressDialog dialog = new ProgressDialog(...); 

    protected onPreExecute() { 
     dialog.show(); 
    } 
    protected onPostExecute() { 
     dialog.hide(); 
    } 
};

संवाद रद्द करने योग्य है और वास्तव में कुछ हो जाता है दूर जब मैं AsyncTask के निष्पादन के दौरान रद्द करें बटन दबाएं।

जब ऐसा होता है, तो मैं AsyncTask को रद्द करने के लिए कुछ कोड भी चलाऊंगा (अभी भी, यह भी सोचा कि वह प्रोग्रेसडिअलॉग चला जाता है, AsyncTask चल रहा है और अंत में पूरा हो जाता है)। मैं ProgressDialog से अपने ही वर्ग पाने की कोशिश की और फिर

setOnDismissListener(new OnDismissListener() { 
@Override public void onDismiss(DialogInterface d) { 
    /* do something */ 
    } 
};

(या कुछ और एक OnCancelListener के साथ इसी तरह) करते हैं, लेकिन यह केवल कहा जाता हो जाता है कभी नहीं।

कोई विचार? जब प्रोग्रेसडिअलॉग दिखा रहा है, तो मुझे उपयोगकर्ता को चल रहे AsyncTask को रद्द करने के लिए कुछ तंत्र की आवश्यकता है।

+0

एक उदाहरण : //www.quicktips.in/correct-way-to-cancel-an-asynctask-in-android/ –

उत्तर

15

मैं इस परीक्षण नहीं किया है, लेकिन कुछ इस तरह का प्रयास करें:

final class UploadTask extends AsyncTask implements OnDismissListener{ 
     ProgressDialog dialog = new ProgressDialog(...); 

     protected onPreExecute() { 
      dialog.setOnDismissListener(this); 
      dialog.show(); 
     } 
     protected onPostExecute() { 
      dialog.hide(); 
     } 

     @Override 
     public void onDismiss(DialogInterface dialog) { 
      this.cancel(true); 
     } 
}; 
+0

मैंने अपने कन्स्ट्रक्टर में प्रोग्रेसडिअलॉग की शुरुआत को स्थानांतरित करने का निर्णय लिया, जिसके लिए कुछ विचित्र कारणों से चाल चल रही थी। आपकी विधि भी काम कर सकती है, कोशिश नहीं की है। किसी भी मामले में, अगर किसी को भी एक ही समस्या हो रही है: उस बिंदु के साथ खेलें जहां आप प्रोग्रेसडिअलॉग शुरू करते हैं। –

+0

+1 और धन्यवाद, आपके उत्तर ने मेरी मदद की –

संबंधित मुद्दे