आवेदन इसके मुख्य धागे पर बहुत अधिक काम कर सकता है


379

मैं Android SDK / API वातावरण में नया हूं। यह पहला है जो मैं एक प्लॉट / चार्ट बनाने की कोशिश कर रहा हूं। मैंने 3 अलग-अलग मुफ्त पुस्तकालयों का उपयोग करके विभिन्न प्रकार के नमूना कोडों को एमुलेटर चलाने की कोशिश की, लेआउट स्क्रीन में कुछ भी नहीं दिख रहा है। लॉगकट निम्न संदेश दोहरा रहा है:

 डब्ल्यू / ट्रेस (1378): nativeGetEnabledTags से अप्रत्याशित मान: 0
 I / कोरियोग्राफर (1378): 55 फ्रेम छोड़ दिया! आवेदन इसके मुख्य धागे पर बहुत अधिक काम कर सकता है।

यह समस्या बनी नहीं रही और चार्ट ने काम किया जब मैंने एक लाइसेंस लाइब्रेरी की मूल्यांकन प्रति से संबंधित नमूना कोड चलाया।


2
क्या आप अपने चार्ट को एक अलग धागे पर बना रहे हैं?
Areks

आपकी टिप्पणी के लिए धन्यवाद, मैंने इसे और अधिक स्पष्ट करने के लिए प्रश्न को संपादित किया। जब चल रहा है तो गतिविधि दिखा रही है कि मैं एक ऐसी गतिविधि चला रहा हूं जिसका कोई लेआउट नहीं है => एक सफेद स्क्रीन दिखा रहा है।
user2038135

1
@ एरेक्स नहीं, मैं एक अलग थ्रेड का उपयोग नहीं कर रहा हूं।
user2038135 23

1
मुझे लगता है कि आपको मुख्य थ्रेड पर लंबे ऑपरेशन करने के लिए बिल्कुल भी अनुशंसित नहीं है, क्योंकि यह पूरे एप्लिकेशन को फ्रीज करता है, आप पढ़ सकते हैं कि यहां थ्रेड्स का उपयोग कैसे करें: stackoverflow.com/questions/3391272/… "कोड को अनदेखा करें" HTTP अनुरोध "और बस अपने संभावित लंबे संचालन को वहां निष्पादित करें।
Areks

1
आप खोज करने का प्रयास क्यों नहीं करते हैं, आपको कोरियोग्राफर के बारे में जानकारी मिलेगी। मैं आपको इस जवाब को पढ़ने के लिए सलाह देता हूं: stackoverflow.com/questions/11266535/…
गेब्रियल एस्टेबन

जवाबों:


479

से लिया गया: Android UI: स्किप किए गए फ़्रेम को ठीक करना

जो कोई भी एंड्रॉइड एप्लिकेशन विकसित करना शुरू करता है, वह इस संदेश को लॉगकैट पर देखता है "कोरियोग्राफर (एबीसी): स्किप किए गए xx फ्रेम! आवेदन इसके मुख्य धागे पर बहुत अधिक काम कर सकता है। ” तो वास्तव में इसका क्या मतलब है, आपको क्यों चिंतित होना चाहिए और इसे कैसे हल करना चाहिए।

इसका मतलब यह है कि आपके कोड को प्रक्रिया में लंबा समय लग रहा है और इसकी वजह से फ्रेम बंद हो रहे हैं, यह शायद कुछ भारी प्रसंस्करण के कारण है जो आप अपने एप्लिकेशन या डीबी एक्सेस या किसी अन्य चीज के दिल में कर रहे हैं जो धागे का कारण बनता है। थोड़ी देर रुक जाओ।

यहाँ एक अधिक विस्तृत विवरण दिया गया है:

कोरियोग्राफर ऐप्स को खुद को vsync से कनेक्ट करने देता है, और परफॉर्मेंस को बेहतर बनाने के लिए सही समय पर चीजें देता है।

एंड्रॉइड दृश्य एनिमेशन आंतरिक रूप से एक ही उद्देश्य के लिए कोरियोग्राफर का उपयोग करता है: एनिमेशन को ठीक से समय देने और संभवतः प्रदर्शन में सुधार करने के लिए।

चूंकि कोरियोग्राफर को प्रत्येक vsync घटनाओं के बारे में बताया जाता है, इसलिए मैं बता सकता हूं कि क्या कोरियोग्राफर में से कोई एक रनवेबल्स पारित हो गया है। * एपिस एक फ्रेम के समय में खत्म नहीं होता है, जिससे फ्रेम को छोड़ दिया जाता है।

मेरी समझ में कोरियोग्राफर केवल फ्रेम स्किपिंग का पता लगा सकता है। यह बताने का कोई तरीका नहीं है कि ऐसा क्यों होता है।

संदेश "आवेदन अपने मुख्य धागे पर बहुत अधिक काम कर सकता है।" भ्रामक हो सकता है।

स्रोत: लॉगकोट में कोरियोग्राफर संदेशों का अर्थ

आपको क्यों चिंतित होना चाहिए

जब यह संदेश एंड्रॉइड एमुलेटर पर पॉप अप हो जाता है और स्किड किए गए फ़्रेम की संख्या काफी कम हो जाती है (<100) तो आप एमुलेटर के सुरक्षित होने की शर्त को धीमा कर सकते हैं - जो लगभग हर समय होता है। लेकिन अगर फ़्रेम की संख्या कम और बड़ी हो गई है और 300+ के क्रम में है, तो आपके कोड के साथ कुछ गंभीर परेशानी हो सकती है। एंड्रॉइड डिवाइस आईओएस और विंडोज डिवाइस के विपरीत हार्डवेयर की एक विशाल सरणी में आते हैं। रैम और सीपीयू भिन्न होता है और यदि आप सभी उपकरणों पर एक उचित प्रदर्शन और उपयोगकर्ता अनुभव चाहते हैं तो आपको इस चीज को ठीक करने की आवश्यकता है। जब फ़्रेम को छोड़ दिया जाता है तो यूआई धीमा और सुस्त होता है, जो कि एक वांछनीय उपयोगकर्ता अनुभव नहीं है।

इसे कैसे जोड़ेंगे

इसे ठीक करने के लिए नोड्स की पहचान करने की आवश्यकता होती है जहां प्रसंस्करण की लंबी अवधि हो सकती है। सबसे अच्छा तरीका सभी प्रसंस्करण करना है चाहे वह मुख्य यूआई थ्रेड से अलग थ्रेड में कितना भी छोटा या बड़ा हो। तो क्या यह डेटा फॉर्म SQLite डेटाबेस तक पहुँच सकता है या कुछ कट्टर गणित कर रहा है या किसी सरणी को सॉर्ट कर रहा है - इसे एक अलग धागे में करें

अब यहाँ एक पकड़ है, आप इन ऑपरेशनों को करने के लिए एक नया थ्रेड बनाएंगे और जब आप अपना एप्लिकेशन चलाएंगे, तो यह कहते हुए क्रैश हो जाएगा कि "केवल ओरिजिनल थ्रेड जिसने व्यू पदानुक्रम बनाया है, वह अपने विचारों को छू सकता है"। आपको इस तथ्य को जानना होगा कि एंड्रॉइड में यूआई को मुख्य धागे या यूआई थ्रेड द्वारा ही बदला जा सकता है। कोई अन्य धागा जो ऐसा करने का प्रयास करता है, विफल हो जाता है और इस त्रुटि के साथ क्रैश हो जाता है। आपको जो करने की आवश्यकता है वह रनऑन यूट्रेड के अंदर एक नया रननेबल बनाने के लिए है और इस रननेबल के अंदर आपको यूआई से जुड़े सभी ऑपरेशन करने चाहिए। एक उदाहरण यहां देखें

तो हमारे पास थ्रेड और रननेबल मुख्य थ्रेड से डेटा प्रोसेसिंग के लिए है, और क्या है? Android में AsyncTask है जो UI थ्रेड पर लंबे समय तक प्रक्रिया करने में सक्षम बनाता है। यह सबसे उपयोगी है जब आप अनुप्रयोग डेटा संचालित या वेब एपीआई संचालित होते हैं या कैनवस का उपयोग करते हुए जटिल यूआई की तरह उपयोग करते हैं। AsyncTask की शक्ति वह है जो पृष्ठभूमि में चीजों को करने की अनुमति देता है और एक बार जब आप प्रसंस्करण कर रहे होते हैं, तो आप बस यूआई पर आवश्यक कार्रवाई कर सकते हैं, बिना किसी लागिंग प्रभाव के। यह संभव है क्योंकि AsyncTask, गतिविधि के UI थ्रेड से स्वयं प्राप्त करता है - आपके द्वारा UI पर AsyncTask के माध्यम से किए गए सभी ऑपरेशन मुख्य UI थ्रेड से एक अलग थ्रेड है, उपयोगकर्ता सहभागिता में कोई बाधा नहीं है।

तो यह वही है जो आपको Android अनुप्रयोगों को सुचारू बनाने के लिए जानना चाहिए और जहाँ तक मुझे पता है कि प्रत्येक शुरुआत करने वाले को यह संदेश उसके कंसोल पर मिलता है।


41
मेरे पास एक ऐप है जहां अगर मैं बटन पर क्लिक करता हूं, तो बटन की पृष्ठभूमि की छवि बदल जाती है और बटन अस्पष्ट है। मैं बहुत अधिक काम कैसे कर रहा हूँ :(
रेमियान8985

1
@ Remian8985 - बटन के लिए पृष्ठभूमि की छवि बदल जाती है (यह मानते हुए कि आप इस छवि को डाउनलोड कर रहे हैं) को एक AsyncTask में किया जाना चाहिए - वह यह है कि उस पृष्ठभूमि का संचालन डाउनलोड करें और UI थ्रेड पर परिणाम प्रकाशित करें (छवि वापस आपूर्ति करें)। Android संदर्भ लिंक
बेंजामिनशीला

11
AsyncTask में @BenJaminSila पृष्ठभूमि बदल रहा है? वास्तव में?
user25

11
@ user25 "यह मानते हुए कि आप इस चित्र को डाउनलोड कर रहे हैं"
forresthopkinsa

"जब यह संदेश एंड्रॉइड एमुलेटर पर पॉप अप होता है और फ़िसलाने वाले फ़्रेमों की संख्या काफी कम होती है (<100) तो आप एमुलेटर के सुरक्षित होने की शर्त को धीमा कर सकते हैं" क्या यह आज भी लागू होता है? एमुलेटर बहुत तेजी से सही हो रहे हैं?
रॉबिन डीजखोफ

243

जैसा कि दूसरों ने ऊपर उत्तर दिया, "55 फ्रेम छोड़ दिया!" मतलब आपके आवेदन में कुछ भारी प्रसंस्करण है।

मेरे मामले के लिए, मेरे आवेदन में कोई भारी प्रक्रिया नहीं है। मैंने डबल और ट्रिपल ने सब कुछ जांचा और उन प्रक्रियाओं को हटा दिया जो मुझे लगता है कि थोड़ा भारी था।

मैंने फ्रैगमेंट्स, एक्टिविटीज, लाइब्रेरियों को तब तक हटाया जब तक कि केवल कंकाल नहीं बचा। लेकिन फिर भी समस्या दूर नहीं हुई। मैंने संसाधनों की जाँच करने का निर्णय लिया और कुछ आइकन और पृष्ठभूमि पाया जिनका उपयोग मैं बहुत बड़ा हूँ क्योंकि मैं उन संसाधनों के आकार की जाँच करना भूल गया।

इसलिए, मेरा सुझाव यह है कि यदि उपरोक्त उत्तर में से कोई भी मदद नहीं करता है, तो आप अपने संसाधन फ़ाइलों का आकार भी देख सकते हैं।


1
मेरे लिए भी काम किया। मेरे पास एक एप्लिकेशन था जो बहुत कम काम कर रहा था लेकिन धीमा और सुस्त था। मैं तख्ते छोड़ लॉग हो रही रखा। एक बार जब मैंने अपनी गतिविधि से पृष्ठभूमि हटा दी तो सब कुछ ठीक था। धन्यवाद!
अकरबी

महान जवाब, मेरा मानना ​​है कि यह वास्तव में मेरी समस्या थी। मैंने अन्य (काफी सम्मिलित) समाधानों का एक गुच्छा आज़माया और ऐप बिल्कुल धीमा हो गया। मैंने सभी वेब सेवाएँ निकालीं, और अपने कोड को हड्डी से नीचे करने का प्रयास किया। काम नहीं किया, तब मैंने यह देखा। जैसे ही मैंने अपनी पृष्ठभूमि की छवि (मेरे पास सबसे बड़ी छवि है) को हटा दिया, ऐप उतनी ही तेजी से काम करता है जितना आप पुराने "धीमे" कोड के साथ सामान पर भी क्लिक कर सकते हैं।
एम बारबोसा

आपने मेरा दिन बना दिया!
निकोलस मास्ट्रोमिनो

:) आप एक बेतुके प्रतिभाशाली हैं।
मेटिन इल्हान

@ बत्सेवा 1 केबी होना आवश्यक नहीं है। यह आपकी आवश्यकताओं पर निर्भर करता है, मान लें कि आपको स्पष्ट छवि की आवश्यकता है, आप उच्च रिज़ॉल्यूशन का उपयोग कर सकते हैं, लेकिन सुनिश्चित करें कि आप विभिन्न आकारों में संसाधनों के विभिन्न फ़ोल्डरों में विभाजित हो गए हैं।
सिथू

61

मेरी भी यही समस्या थी।
मेरा एक ऐसा मामला था जहां मैं एक पृष्ठभूमि छवि का उपयोग कर रहा था, जो कि ड्रॉबल में थी। विशेष छवि लगभग 130kB की थी और मेरे एंड्रॉइड ऐप में स्प्लैश स्क्रीन और होम पेज के दौरान उपयोग की गई थी।

समाधान - मैंने बस उस विशेष छवि को ड्रॉबल्स से ड्राबल्स-एक्सएक्सएक्स फोल्डर में स्थानांतरित कर दिया था और पृष्ठभूमि में कब्जे वाली बहुत सारी मेमोरी को मुक्त करने में सक्षम था और लंघन फ्रेम अब लंघन नहीं थे।

बैकग्राउंड ड्रॉबल्स फ़ाइलों को संग्रहीत करने के लिए अद्यतन 'nodp' drawable रिसोर्स फ़ोल्डर का उपयोग करें।
क्या घनत्व योग्य ड्रॉबल फोल्डर या ड्रॉएबल-नॉडपी पूर्वता लेगा?


7
मैंने अपनी बड़ी पृष्ठभूमि की छवि को खींचने से लेकर मीमैप-एक्सएचडीएचडीआई तक स्थानांतरित कर दिया और इसने चाल चली!
bgplaya

आपने बहुत मदद की। धन्यवाद
N.Droid

2
यह उपाय टोटका कर रहा है। मैं drawable-xxxhdpiइसके बजाय फ़ोल्डर का उपयोग कर रहा हूं drawableजो उपयोग की गई मेमोरी को नाटकीय रूप से कम कर देता है (~ 70 प्रतिशत कम)। यह भी जानना अच्छा है, डीपीआई आकार में एक ही आकार के स्क्रीन अलग-अलग हैं। उन दोनों के बीच पिक्सेल में अनुपात है ldpi = 1:0.75, mdpi = 1:1, hdpi = 1:1.5, xhdpi = 1:2, xxhdpi = 1:3, xxxhdpi = 1:4drawable-xxxhdpiफ़ोल्डर का उपयोग करके आप अपने डिवाइस के स्क्रीन पर छवियों को डाउनस्क्रीन करने की अनुमति देते हैं जो मेमोरी और सीपीयू की खपत को कम करता है।
टिमो बैहर

2
से चलती छवियों drawableको drawable-nodpiप्राप्त करने से रोकता है आवेदन Out of Memory Error
श्रुति

हे भगवान ... धन्यवाद! मुझे ड्रॉ करने योग्य फ़ोल्डर के भीतर एक छवि थी और इसने मेरे ऐप को नरक के रूप में धीमा कर दिया (हालांकि छवि केवल 100kb थी !!!)। ड्रा करने योग्य-xxx फ़ाइलों को बनाने के बाद (मैंने एंड्रॉइड ड्रॉएबल आयातक का उपयोग किया) मेरा ऐप बहुत तेज़ है। आपका बहुत बहुत धन्यवाद!
त्रुटि 1337

20

UI थ्रेड पर देरी का एक और आम कारण साझाकरणप्रयोग है। जब आप PreferenceManager.getSharedPreferencesपहली बार एक और इसी तरह के तरीकों को कॉल करते हैं , तो संबंधित .xml फ़ाइल को तुरंत लोड किया जाता है और उसी थ्रेड में पार्स किया जाता है

इस समस्या से निपटने के अच्छे तरीकों में से एक है, पृष्ठभूमि थ्रेड से पहले SharedPreference लोड को ट्रिगर करना, जितनी जल्दी हो सके शुरू करना (जैसे onCreateआपके एप्लिकेशन वर्ग से)। इस तरह से वरीयता वस्तु का निर्माण उस समय तक किया जा सकता है जब तक आप इसका उपयोग करना चाहते हैं।

दुर्भाग्य से, कभी-कभी स्टार्टअप के शुरुआती चरणों (जैसे प्रारंभिक गतिविधि या यहां तक ​​कि एप्लिकेशन में ही) के दौरान वरीयता फ़ाइलों को पढ़ना आवश्यक है। ऐसे मामलों में यूआई का उपयोग करके स्टालिंग से बचना अभी भी संभव है MessageQueue.IdleHandler। मुख्य थ्रेड पर आपको जो कुछ भी करने की ज़रूरत है वह सब करें, फिर अपनी गतिविधि पूरी तरह से आकर्षित होने पर कोड निष्पादित करने के लिए IdleHandler स्थापित करें। उस रननेबल में आपको बहुत सारे ड्राइंग ऑपरेशनों में देरी किए बिना और कोरियोग्राफर को दुखी करने के लिए शेयर्डप्रिफर का उपयोग करने में सक्षम होना चाहिए।


1
इस मामले के लिए, आपको कमिट () के बजाय लागू () विधि पसंद करनी चाहिए। लागू () विधि UI को ब्लॉक नहीं कर सकती है। आप यहाँ से देख सकते हैं developer.android.com/training/data-storage/sared-preferences
एम्रे ज्यूरिस

16

अपने एप्लिकेशन प्रदर्शन को बेहतर बनाने के लिए निम्नलिखित रणनीतियों का उपयोग करने का प्रयास करें:

  • यदि संभव हो तो मल्टी-थ्रेडिंग प्रोग्रामिंग का उपयोग करें। प्रदर्शन लाभ बहुत बड़ा है, भले ही आपके स्मार्ट फोन में एक कोर हो (धागे अलग-अलग कोर में चल सकते हैं, अगर प्रोसेसर में दो या अधिक हैं)। यह आपके ऐप लॉजिक को UI से अलग करने के लिए उपयोगी है। जावा थ्रेड्स, AsyncTask या IntentService का उपयोग करें। इसकी जाँच करें
  • एंड्रॉइड डेवलपमेंट वेबसाइट के misc प्रदर्शन टिप्स पढ़ें और उनका पालन करें। यहां देखें

3
आपके पहले लिंक के लिए आवश्यक है कि आपके पास "... एक मान्य खाता हो ..." इसे एक्सेस करने के लिए।
बजे

9

मुझे भी यही समस्या थी। एंड्रॉइड एम्यूलेटर ने एंड्रॉइड <6.0 पर पूरी तरह से काम किया। जब मैंने एमुलेटर नेक्सस 5 (एंड्रॉइड 6.0) का उपयोग किया, तो ऐप ने I/Choreographer: Skipped framesलॉग्स में बहुत धीमी गति से काम किया ।

इसलिए, मैंने इस समस्या hardwareAcceleratedको trueइस तरह से मेनिफेस्ट फ़ाइल विकल्प में बदलकर हल किया :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapplication">

    <application android:hardwareAccelerated="true">
        ...
    </application>
</manifest>

8

मैं एक विशेषज्ञ नहीं हूं, लेकिन मुझे यह डिबग संदेश तब मिला जब मैं अपने एंड्रॉइड एप्लिकेशन से वेब सर्वर पर डेटा भेजना चाहता था। हालाँकि, मैंने AsyncTask क्लास का उपयोग किया था और बैकग्राउंड में डेटा ट्रांसफर किया था, जिसके परिणामस्वरूप मुझे सर्वर से प्राप्त डेटा वापस मिल गया () AsyncTask क्लास का तरीका जो UI को तुल्यकालिक बनाता है, जिसका अर्थ है कि आपका UI बहुत लंबे समय तक इंतज़ार कर रहा होगा। इसलिए मेरी सलाह है कि आप अपने ऐप को हर नेटवर्क ओरिएंटेड कार्यों को एक अलग थ्रेड पर करें।


6

अपनी छवियों को अनुकूलित करें ... 100KB से बड़ी छवियों का उपयोग न करें ... छवि लोड करने में बहुत अधिक CPU लगता है और आपके एप्लिकेशन हैंग हो जाते हैं।


4
जावा कोड द्वारा छवि का आकार घटाएं या फ़सल के चित्रों का फ़ोटोशॉप का उपयोग करें .. साथ ही कंप्रेशर्स का उपयोग करके चित्रों को भी संकुचित करें
।io

5

मुझे भी यही समस्या थी। मेरे मामले में मेरे पास 2 नेस्टेड रिलेटिव लेआउट थे। RelativeLayout को हमेशा दो माप पास करने होते हैं। यदि आप RelativeLayouts को घोंसला देते हैं, तो आपको एक घातीय माप एल्गोरिथ्म मिलता है।


4

यह आमतौर पर तब होता है जब आप मुख्य थ्रेड में बड़ी प्रक्रियाओं को निष्पादित कर रहे होते हैं। 200 से कम फ्रेम को छोड़ना ठीक है। लेकिन यदि आपके पास 200 से अधिक स्किप किए गए फ़्रेम हैं, तो यह धीमा हो सकता है कि आप अनुप्रयोग यूआई थ्रेड हैं। आप क्या कर सकते हैं इन प्रक्रियाओं को नए थ्रेड में कहा जाता है जिसे वर्कर थ्रेड कहा जाता है और उसके बाद, जब आप यूआई थ्रेड के साथ एक्सेस करना और sth करना चाहते हैं (उदाहरण के लिए, व्यूज, findView आदि ... के साथ कुछ करें) आप हैंडलर या runOnUiThread का उपयोग कर सकते हैं (मुझे यह अधिक पसंद है) प्रसंस्करण के परिणाम प्रदर्शित करने के लिए। यह समस्या को हल करता है। वर्कर थ्रेड्स का उपयोग करना बहुत उपयोगी होता है या इस मामले में आने पर भी इसका उपयोग किया जाना चाहिए।


1

मुझे भी यही समस्या थी। जब मैंने दूसरे कंप्यूटर पर कोड चलाया, तो यह ठीक काम किया। हालांकि, खदान में, यह प्रदर्शित किया गया "आवेदन अपने मुख्य धागे पर बहुत अधिक काम कर सकता है"।

मैंने एंड्रॉइड स्टूडियो [फ़ाइल -> अमान्य कैश / रिस्टार्ट -> "अमान्य और रीस्टार्ट"] पर क्लिक करके अपनी समस्या हल की।


मुझे नहीं पता कि आपके समाधान ने काम क्यों किया। वैसे भी धन्यवाद।
भुवनेश बीएस

1

मेरे मामले में, यह इसलिए था क्योंकि मैंने गलती से एक विधि पर एक विराम बिंदु निर्धारित किया था। एक बार जब मैंने इसे मंजूरी दे दी, तो संदेश चला गया और प्रदर्शन में बहुत सुधार हुआ।


0

मेरे ऐप में यही समस्या थी। लेकिन यह कार्ड की सूची और उस पर पाठ प्रदर्शित करने के अलावा अन्य नहीं कर रहा था। पृष्ठभूमि में कुछ भी नहीं चल रहा है। लेकिन फिर कुछ जांच के बाद पाया गया कि कार्ड बैकग्राउंड के लिए सेट की गई छवि इस कारण थी, भले ही यह छोटी (350kb) थी। तब मैंने http://romannurik.github.io/AndroidAssetStudio/index.html का उपयोग करके छवि को 9patch में बदल दिया ।
इसने मेरे लिए काम किया।


0

इस मुद्दे पर ज्यादा R & D करने के बाद मुझे समाधान मिला,

मेरे मामले में मैं ऐसी सेवा का उपयोग कर रहा हूं जो हर 2 सेकंड में चलेगी और runonUIThread के साथ, मैं सोच रहा था कि समस्या वहाँ थी, लेकिन बिल्कुल भी नहीं। अगला मुद्दा जो मुझे मिला वह यह है कि मैं ऐप में बड़ी छवि का उपयोग कर रहा हूं और समस्या को हल कर सकता हूं।

मैंने छवियाँ हटा दीं और नई छवियां सेट कीं।

निष्कर्ष: - अपने कोड में देखें क्या कोई कच्ची फ़ाइल है जिसका आप उपयोग कर रहे हैं जो बड़े आकार की है।


0

पहले चेतावनी पढ़ें। यह मुख्य धागे पर अधिक भार कहता है। तो आपको जो करना है, वह केवल एक थ्रेड में अधिक कार्य के साथ रन फ़ंक्शन है।


-1

मुझे एक ऐप विकसित करते समय एक ही मुद्दा मिला जो ग्रिड लेआउट पर बहुत सारी ड्रॉबल पीएनजी फ़ाइलों का उपयोग करता है। मैंने अपने कोड को यथासंभव अनुकूलित करने की कोशिश की .. लेकिन यह मेरे लिए कारगर नहीं था .. फिर मैंने उन png के आकार को कम करने की कोशिश की .. और इसके ठीक काम करने का अनुमान लगाया .. तो मेरा सुझाव कम करना है अगर कोई है तो संसाधनों का आकार ..

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.