संभव डुप्लिकेट कहा जाता है:
AsyncTask block UI threat and show progressbar with delayProgressDialog नहीं दिखाया जाता है जब AsyncTask.get()
मैं एक progressDialog दिखाने के लिए किसी भी सर्वर से JSON पुनः प्राप्त करते समय चाहते हैं। तो मैंने एक समाधान के रूप में AsyncTask का उपयोग किया था (सुनिश्चित नहीं है कि कोई अलग तरीका है)।
सबकुछ ठीक है, प्रोग्रेसडिअलॉग ठीक से काम करता है जब तक मैं AsyncTask उदाहरण का उपयोग कर .get() विधि को कॉल नहीं करता। मुझे लगता है कि यह किसी भी तरह यूआई अवरुद्ध कर रहा है। यहाँ मेरी AsyncTask है: यहाँ
public class myAsync extends AsyncTask<String, String, List> {
String message; // for dialog message
ProgressDialog progress;
Intent myIntent;
Context ctx;
public myAsync(String message, Context ctx) {
this.message = message;
this.ctx = ctx;
progress = new ProgressDialog(ctx);
}
@Override
protected void onPreExecute() {
progress.setMessage(message);
progress.setIndeterminate(true);
progress.setCancelable(false);
progress.show();
}
@Override
protected List doInBackground(String... params) {
//returns any list after the task
return anyList;
}
@Override
protected void onPostExecute(List result) {
if(progress.isShowing())
progress.dismiss();
}
}
और myActivity है जो कहता है AsyncTask:
myAsync asyncTask = new myAsync("Loading...", this);
asyncTask.execute("Any string", "Other string");
asyncTask.get(); // If I comment out this line, ProgressDialog works
के बाद, निष्पादित जब मैं doInBackground और onPostExecute से परिणाम दोनों वहाँ कोई समस्या नहीं है लॉग इन करने की कोशिश की। लेकिन अगर मैं .get() के साथ प्राप्त करना चाहता हूं तो परिणाम प्रोग्रेसडिअलॉग दिखाया नहीं गया है या इतना छोटा समय दिखाया गया है (शायद 0.2 सेकंड)
समस्या क्या है?
क्या आप कोई अपवाद छिपा रहे हैं? – Richie
वास्तव में नहीं। जैसा कि मैंने कहा, संवाद विंडो इतनी कम समय देखी जा सकती है। वास्तव में इसे कम से कम 2 सेकंड देखा जाना चाहिए। –