2011-01-04 9 views
20

की गतिविधि में संवाद मेरे ऐप में मैं AsyncTask में कुछ गंभीर काम कर रहा हूँ प्रगति अद्यतन कर रहा है और अपने मुख्य मेरी गतिविधि में एक ProgressDialog दिखा:के रूप में एंड्रॉयड ट्यूटोरियल ने सुझाव दिया AsyncTask

dialog = ProgressDialog.show(MyActivity.this, "title", "text"); 
new MyTask().execute(request); 

जहां फिर बाद में MyTask में मैं पोस्ट गतिविधि के लिए वापस परिणाम:

:

class MyTask extends AsyncTask<Request, Void, Result> { 

    @Override protected Result doInBackground(Request... params) { 
     // do some intense work here and return result 
    } 

    @Override protected void onPostExecute(Result res) { 
     postResult(res); 
    } 
} 

और परिणाम पोस्टिंग पर, मुख्य गतिविधि में मैं संवाद छिपाने 210

तो सबकुछ ठीक काम कर रहा है, लेकिन मैं किसी भी तरह से प्रगति संवाद को अद्यतन करना चाहता हूं ताकि उपयोगकर्ता को केवल डमी के बजाय कुछ वास्तविक प्रगति दिखा सकें "कृपया प्रतीक्षा करें ..." संदेश। क्या मैं किसी भी तरह से MyTask.doInBackground से प्रगति संवाद तक पहुंच सकता हूं, जहां सभी काम किए जाते हैं?

जैसा कि मैं समझता हूं कि यह अलग थ्रेड के रूप में चल रहा है, इसलिए मैं वहां से मुख्य गतिविधि से "बात" नहीं कर सकता और यही कारण है कि मैं परिणाम को वापस धक्का देने के लिए onPostExecute का उपयोग करता हूं। लेकिन समस्या यह है कि onPostExecute केवल तभी बुलाया जाता है जब सभी काम पहले ही हो चुके हैं और मैं कुछ करने के बीच में संवाद को प्रगति करना चाहता हूं।

कोई सुझाव यह कैसे करें?

उत्तर

40

AsyncTask में विधि onProgressUpdate(Integer...) है कि आप उदाहरण के लिए प्रत्येक पुनरावृत्ति को कॉल कर सकते हैं या प्रत्येक बार doInBackground() के दौरान publishProgress() पर कॉल करके प्रगति की जाती है।

+0

उह, किसी भी तरह डॉक्स में वह हिस्सा याद किया, धन्यवाद अधिक जानकारी के लिए docs का संदर्भ लें! – Laimoncijus

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