मैंने कुछ प्रश्नों को मेरे जैसा लगभग देखा है, लेकिन मुझे पूरा जवाब नहीं मिला जो मेरे सभी संदेहों को पूरा करता है .. तो यहां मैं हूं .. मान लीजिए कि आपके पास एक आंतरिक कक्षा के साथ एक गतिविधि है जो AsyncTask
कक्षा को बढ़ाती है इस तरह:जब भी यह चल रहा है तब लॉन्चिंग गतिविधि बंद/नष्ट हो जाती है जब AsyncTask का क्या होता है?
public class MyActivity extends Activity {
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
protected Bitmap doInBackground(String... urls) {
return DownloadImage(urls[0]);
}
protected void onPostExecute(Bitmap result) {
ImageView img = (ImageView) findViewById(R.id.img);
img.setImageBitmap(result);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
new DownloadImageTask().execute("http://mysite.com/image.png")
}
}
मान लीजिए कि गतिविधि को रोका या नष्ट कर दिया (शायद दो मामलों में अलग हैं), जबकि DownloadImageTask
अभी भी पृष्ठभूमि में चल रहा है है .. तो, DownloadImageTask
के तरीकों गतिविधि UI थ्रेड पर चलते हैं कि ट्रिगर किया जा सकता है और DownloadImageTask
गतिविधि की विधियों तक पहुंचने का प्रयास कर सकता है (यह एक आंतरिक वर्ग है, इसलिए यह बाहरी वर्ग के विधियों और आवृत्ति चर का उपयोग कर सकता है) रोके या नष्ट गतिविधि के साथ, जैसेपर कॉल नीचे दिए गए उदाहरण में.. तब क्या होता है? क्या यह चुपचाप असफल हो जाता है? क्या यह कोई अपवाद उत्पन्न करता है? क्या उपयोगकर्ता को अधिसूचित किया जाएगा कि कुछ गलत हो गया है?
अगर हमें यह ध्यान रखना चाहिए कि लॉन्चिंग थ्रेड (इस मामले में गतिविधि) अभी भी जिंदा है, तो चल रहे यूआई विधियों को लागू किया जाता है, हम AsyncTask
के भीतर से इसे कैसे पूरा कर सकते हैं?
यदि आप एक नकली प्रश्न के रूप में इस लगता है, लेकिन शायद इस सवाल का थोड़ा अधिक व्यक्त है और किसी को अधिक विस्तार
जब आप इस कोड को चलाते हैं, तो क्या यह चुपचाप असफल हो जाता है, कोई अपवाद उत्पन्न करता है, या उपयोगकर्ता को सूचित करता है कि कुछ गलत हो गया है? – CommonsWare
मैंने अभी तक ऐसा कोड नहीं चलाया है, मैं इसे अगले कुछ दिनों में करूँगा .. मैं अपने ऐप के कार्यान्वयन में जाने से पहले इसके बारे में सोच रहा था। जैसे ही मैं एक परीक्षण चला सकता हूं, मैं इस पोस्ट को अपडेट कर दूंगा।धन्यवाद @ कॉमन्सवेयर –
मेरा मुद्दा यह है कि व्यवहार अनियंत्रित है, विशेष रूप से इस तथ्य को देखते हुए कि हम गतिविधि में कुछ और नहीं देख रहे हैं। 'findViewById()' 'r.id.img' के लिए' null' वापस कर सकता है, या ऐसा नहीं हो सकता है। और एंड्रॉइड ओएस रिलीज, डिवाइस निर्माता बदलाव, और रोम मोड के आधार पर यह व्यवहार डिवाइस से डिवाइस में भिन्न रूप से भिन्न हो सकता है। – CommonsWare