दौरान होता है अगर एंड्रॉयड-support-v4.jar और FragmentActivity (इस बिंदु पर कोई टुकड़े)नहीं बुलाया LoaderCallbacks.onLoadFinished उन्मुखीकरण परिवर्तन AsyncTaskLoader रन
का उपयोग करते हुए मैं एक AsyncTaskLoader जो मैं लोड होना प्रारंभ हो और फिर उन्मुखीकरण जबकि बदल दिया है पृष्ठभूमि धागा अभी भी चल रहा है। मेरे लॉग में मैं प्रतिक्रियाओं को पृष्ठभूमि अनुरोधों के माध्यम से देखता हूं। प्रतिक्रियाएं पूरी होती हैं और मैं लोडफिनिश() पर कॉल करने की अपेक्षा करता हूं, लेकिन यह कभी नहीं होता है।
समस्या निवारण के साधन के रूप में, मैनिफेस्ट में, यदि मैं एंड्रॉइड सेट करता हूं: configChanges = "ओरिएंटेशन" ऑनलोड लोड() को उम्मीद के रूप में कॉल किया जाता है।
मेरी गतिविधि लोडर कॉलबैक लागू करती है। LoaderManager.initLoader() के स्रोत में, मैं देखता हूं कि अगर लोडर पहले से मौजूद है, तो नया कॉलबैक लोडरइन्फो आंतरिक ऑब्जेक्ट क्लास पर सेट है लेकिन मुझे नहीं लगता कि Loader.registerListener() को फिर से कहलाया जाता है। रजिस्टर लिस्टनर को केवल तब कहा जाता है जब LoaderManagerImpl.createAndInstallLoader() को कॉल किया जाता है।
मुझे संदेह है कि गतिविधि को नष्ट कर दिया गया है और अभिविन्यास परिवर्तन पर पुनर्निर्मित किया गया है और चूंकि यह कॉलबैक के श्रोता है, इसलिए नई गतिविधि अधिसूचित होने के लिए पंजीकृत नहीं है।
क्या कोई मेरी समझ की पुष्टि कर सकता है और समाधान क्या है ताकि लोडफिशिश को अभिविन्यास परिवर्तन के बाद बुलाया जा सके?
एक और समस्या निवारण चरण के रूप में मैंने एक यूआई-कम वर्कर फ्रैगमेंट और सेट रीटेन इंस्टेंस को सत्य में जोड़ा। टुकड़ा लोडर कॉलबैक लागू करता है। फ्रैगमेंट को अभिविन्यास परिवर्तनों के बीच बनाए रखा जाता है लेकिन इसके ऑनलोड लोड() को अभिविन्यास परिवर्तन के बाद कभी नहीं कहा जाता है। – Daddyboy
आप कहां 'initLoader() 'कह रहे हैं? सुनिश्चित करें कि यह 'ऑनक्रेट() 'में है। बीटीडब्लू, आप लोडर लाइफसाइक्ल (लॉगकैट में) के बारे में कुछ डिबगिंग जानकारी प्राप्त करने के लिए 'LoaderManager.enableDebugLogging (true) 'का उपयोग कर सकते हैं। –