मेरे पास एंड्रॉइड में इस साधारण अक्सर होने वाली स्थिति के बारे में कोई प्रश्न है।एंड्रॉइड में WeakReference/AsyncTask पैटर्न
हमारे पास एक मुख्य गतिविधि है, हम मुख्य एक्टिविटी के संदर्भ के साथ एक AsyncTask का आह्वान करते हैं, ताकि AsyncTask मुख्य क्रियाशीलता पर विचार अपडेट कर सके।
मैं चरणों में घटना नीचे टूट जाएगा
- MainActivity एक AyncTask बनाता है, जिसे करने के लिए अपने संदर्भ से गुजरता है।
- ऐन्सकटास्क, यह काम शुरू करता है, उदाहरण के लिए दस फाइलें डाउनलोड करना
- उपयोगकर्ता ने डिवाइस का अभिविन्यास बदल दिया। इसके परिणामस्वरूप AsyncTask
- में अनाथ पॉइंटर में परिणाम होता है जब AsyncTask पूर्ण हो जाता है, और स्थिति को अद्यतन करने के लिए गतिविधि तक पहुंचने का प्रयास करता है, तो यह शून्य सूचक के कारण क्रैश हो जाता है।
ऊपर के लिए समाधान के रूप में किताब "प्रो एंड्रॉयड 4"
WeakReference<Activity> weakActivity;
in method onPostExecute
Activity activity = weakActivity.get();
if (activity != null) {
// do your stuff with activity here
}
कैसे इस समस्या का समाधान करता है द्वारा सिफारिश की AsyncTask में एक WeakReference रखने के लिए है?
मेरा सवाल यह है कि, यदि मेरा एसिंक्टास्क दस फाइलें डाउनलोड कर रहा है, और 5 के पूरा होने पर गतिविधि को पुनरारंभ किया जाता है (अभिविन्यास परिवर्तन की वजह से) तो क्या मेरा फ़ाइलडाउनलोडिंग टास्क एक बार फिर से बुलाया जाएगा?
पिछली AsyncTask का क्या होगा जो शुरू में शुरू किया गया था?
धन्यवाद, और मैं प्रश्न की लंबाई के लिए क्षमा चाहता हूं।
इस तरह के एक अच्छी तरह से गठित और शब्दबद्ध प्रश्न पोस्ट करने के लिए धन्यवाद। – Travis