में वॉली के साथ वीक रेफरेंस का उपयोग करना चाहिए this article पढ़ने के बाद, मैंने वॉली के साथ मेमोरी लीक के बारे में सोचना शुरू कर दिया। आमतौर पर, वॉली के साथ लागू श्रोताओं के पास बाहरी वर्ग (गतिविधि) का एक अंतर्निहित या स्पष्ट संदर्भ होता है।क्या मुझे मेमोरी लीक के बारे में चिंता करना चाहिए और एंड्रॉइड
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET,
url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
updateLayout();
}
}
इस मामले में
वहाँ एक अंतर्निहित संदर्भ है ... या मैं प्रतिक्रिया से निपटने भली के लिए एक कस्टम JsonObjectRequest बनाते हैं, और इसके निर्माता में बुला गतिविधि के लिए एक संदर्भ में पारित करने के लिए की जरूरत है सकते हैं: उदाहरण के लिए ।
अब कहें कि मैं एक वेब अनुरोध शुरू करता हूं, लेकिन प्रतिक्रिया वापस आने से पहले, मैं उस अनुरोध से दूर नेविगेट करता हूं जिसने अनुरोध शुरू किया था। जो मैं समझता हूं उससे JsonObjectRequest ऑब्जेक्ट मेरी गतिविधि का संदर्भ रखेगा और उसे कचरा एकत्र करने से रोक देगा।
- क्या मैं इसे सही ढंग से समझ रहा हूं, क्या यह एक वैध डर है?
-क्या वॉली लाइब्रेरी स्वचालित रूप से इस से निपटती है?
-अगर मैं एक कस्टम JsonObjectRequest बना रहा हूं और "इस" (गतिविधि के संदर्भ में) में गुजर रहा हूं, तो क्या मुझे गतिविधि में कमजोरता बनाने की आवश्यकता है?
[वॉली दस्तावेज़ीकरण] (https://developer.android.com/training/volley/simple.html) पर एक नज़र डालें। ऐसा लगता है कि जब तक आप अपने खंड/गतिविधि के 'ऑनस्टॉप()' विधि में अपने वॉली अनुरोधों पर रद्द करना सुनिश्चित करते हैं, तो हैंडलर को नहीं बुलाया जाएगा। मुझे लगता है कि इसका मतलब यह भी है कि खंड/गतिविधि का संदर्भ भी हटा दिया जाएगा, जिसका अर्थ है कि टुकड़ा/गतिविधि अब लीक नहीं हुई है। –
@tmalseed धन्यवाद, आपको अपनी टिप्पणी को उत्तर के रूप में पोस्ट करना चाहिए, और मैं इसे स्वीकार करूंगा – Siavash
मुझे 100% विश्वास नहीं है कि यह सही या सबसे उचित उत्तर है। मैंने अपनी सलाह का पालन किया और * हो सकता है * अभी भी गतिविधि को लीक कर रहा है .. –