2016-12-01 11 views
7

मैं कुछ फोन पर त्रुटि लॉग निम्नलिखित हो रही है जो इस प्रकार:एंड्रॉयड: ANR इनपुट का समय समाप्त हो भेजने

कारण: इनपुट का समय समाप्त हो भेजने (क्योंकि छुआ खिड़की निश्चित की प्रक्रिया पूरी नहीं की है गैर महत्वपूर्ण घटना भेजने के लिए प्रतीक्षा कर रहा है इनपुट घटनाएं जो 500.0ms पहले से अधिक थीं। प्रतीक्षा करें कतार लंबाई: 20. प्रतीक्षा करें कतार सिर आयु: 550 9 .1ms।)

मैं नेटवर्किंग कॉल के लिए रेट्रोफिट 2 का उपयोग कर रहा हूं जिसमें मैं async विधि का उपयोग करता हूं, डेटाबेस का उपयोग क्षेत्र के रूप में करता हूं जहां मैंने सामान लिखने के लिए एसिंक लेनदेन का उपयोग किया था। छवि लोडिंग के लिए ग्लाइड का उपयोग करना।

सख्त मोड का उपयोग करने पर मुझे पता चला कि मुझे साझा प्राथमिकताओं के लिए पेनल्टी लॉग नहीं मिला है। समस्या

उत्तर

2

किसी भी प्रकार की महंगी प्रक्रिया जैसे नेटवर्क के माध्यम से डेटा सिंकिंग main thread में नहीं करना चाहिए। Android में कुछ डिफ़ॉल्ट अंतर्निहित विधियां हैं जैसे AsyncTask, IntentService आदि वे worker thread पर हैं। निजी तौर पर मुझे रेट्रोफिट 2 के बारे में अच्छा विचार नहीं है। यदि यह main thread पर काम करता है, तो उस मामले में आपको इसे एक अलग थ्रेड में उपयोग करना चाहिए।

+1

प्रलेखन के अनुसार retrofit 2 enqueue विधि async में काम करता है। – Sutirth

+0

@Sutirth: क्या आप इस मुद्दे को हल करने में सक्षम थे? – j10

+2

@jitenshah हाँ मैं इसे हल करने में सक्षम था। असल में मैं मुख्य धागे पर लिखने के अपने डीबी ऑपरेशन कर रहा था, जो इसे भारी रूप से एसिंक कार्य में ले जाया गया था, यह एक आकर्षण की तरह काम करता था। मेरे लिए एंड्रॉइड – Sutirth

संबंधित मुद्दे