मेरे पास एक AsyncTaskवर्ग है जिसे मैं निष्पादित करता हूं जो एक वेबसाइट से डेटा की एक बड़ी सूची डाउनलोड करता है।
इस स्थिति में कि उपयोग के समय अंतिम उपयोगकर्ता के पास बहुत धीमा या धब्बेदार डेटा कनेक्शन है, मैं समय की AsyncTaskअवधि के बाद टाइमआउट करना चाहता हूं । मेरा पहला दृष्टिकोण इस तरह है:
MyDownloader downloader = new MyDownloader();
downloader.execute();
Handler handler = new Handler();
handler.postDelayed(new Runnable()
{
@Override
public void run() {
if ( downloader.getStatus() == AsyncTask.Status.RUNNING )
downloader.cancel(true);
}
}, 30000 );
शुरू करने के बाद AsyncTask, एक नया हैंडलर शुरू किया जाता है जो AsyncTask30 सेकंड के बाद रद्द कर देगा यदि यह अभी भी चल रहा है।
क्या यह एक अच्छा तरीका है? या वहाँ कुछ बनाया है AsyncTaskकि इस उद्देश्य के लिए बेहतर अनुकूल है?