Code Droid के लिए धन्यवाद, मैं एक सार AsyncTask
कक्षा लिखने में सक्षम था जो निर्दिष्ट विलंब के बाद अनिश्चित प्रगति पट्टी दिखाता है। बस AsyncTask
के बजाय इस वर्ग का विस्तार और जब उचित super()
कॉल करने के लिए सुनिश्चित हो:
public abstract class AsyncTaskWithDelayedIndeterminateProgress
<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> {
private static final int MIN_DELAY = 250;
private final ProgressDialog progressDialog;
private final CountDownTimer countDownTimer;
protected AsyncTaskWithDelayedIndeterminateProgress(Activity activity) {
progressDialog = createProgressDialog(activity);
countDownTimer = createCountDownTimer();
}
@Override protected void onPreExecute() {
countDownTimer.start();
}
@Override protected void onPostExecute(Result children) {
countDownTimer.cancel();
if(progressDialog.isShowing())
progressDialog.dismiss();
}
private ProgressDialog createProgressDialog(Activity activity) {
final ProgressDialog progressDialog = new ProgressDialog(activity);
progressDialog.setIndeterminate(true);
return progressDialog;
}
private CountDownTimer createCountDownTimer() {
return new CountDownTimer(MIN_DELAY, MIN_DELAY + 1) {
@Override public void onTick(long millisUntilFinished) { }
@Override public void onFinish() {
progressDialog.show();
}
};
}
स्रोत
2012-07-27 19:43:13
क्षमा करें, यह एक अनिश्चित 'ProgressBar' है। मैं इसे और अधिक प्रसन्न करने के लिए बस देरी नहीं करना चाहता, मैं पूरी तरह से डिस्प्ले से बचना चाहता हूं जब तक देरी से अधिक नहीं हो जाता, कहें, 250ms। –
ठीक है, गोचा। यह अब मुझे और अधिक समझ में आता है। आपका पृष्ठभूमि ऑपरेशन क्या है? –
मैंने इस मामले में इसे एक और तरीका हल किया, लेकिन भविष्य में मैं इसे डाउनलोड या सीपीयू गहन संचालन जैसी चीजों पर लागू करना चाहता हूं। कुछ डिवाइस या नेटवर्क कनेक्शन जल्दी से प्रतिक्रिया दे सकते हैं कि "कृपया प्रतीक्षा करें" पॉपअप, और अन्य धीमे लोगों को वारंट न करें। हालांकि मुझे विश्वास नहीं है कि हमने प्रगति पट्टी के प्रदर्शन में देरी से 250 एमएस की समस्या को आगे नहीं बढ़ाया है। यदि ऑपरेशन ने 251 एमएस लिया है, तो निश्चित रूप से आपको अभी भी झपकी/गड़बड़ी मिल जाएगी, लेकिन फिर 100 एमएमएस देरी जोड़ने से यह थोड़ा आसान लग सकता है और उतना सापेक्ष प्रदर्शन प्रभाव नहीं पड़ता है। –