2014-10-15 7 views
11

कुछ महीनों के बाद से मुझे त्रुटि संदेश के साथ अपने ऐप में बड़ी संख्या में अपवाद हैं: विंडो जोड़ना विफल रहा (android.os.TransactionTooLargeException)एंड्रॉइड: विंडो को असफल/android.os जोड़ना। सैमसंग उपकरणों पर ट्रांस्सेक्शनटूलार्ज अपवाद

मुझे आईपीसी बफर लेनदेन आकार 1024KB तक सीमित होने के बारे में पता है, लेकिन मैं सिर्फ अपनी सेवा (लंबी मान) में आईडी भेजता हूं। अजीब बात यह है कि ये अपवाद केवल एंड्रॉइड 4.4.2 (50K से अधिक क्रैश में से प्रत्येक) के साथ सैमसंग उपकरणों पर होता है। क्या आप नवीनतम सैमसंग रोम में एक विशिष्ट बग जानते हैं?

java.lang.RuntimeException: Adding window failed 
     at android.view.ViewRootImpl.setView(ViewRootImpl.java:738) 
     at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:278) 
     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) 
     at android.widget.Toast$TN.handleShow(Toast.java:478) 
     at android.widget.Toast$TN$1.run(Toast.java:374) 
     at android.os.Handler.handleCallback(Handler.java:733) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5476) 
     at java.lang.reflect.Method.invokeNative(Method.java) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) 
     at dalvik.system.NativeStart.main(NativeStart.java) 
Caused by: android.os.TransactionTooLargeException 
     at android.os.BinderProxy.transact(Binder.java) 
     at android.view.IWindowSession$Stub$Proxy.addToDisplay(IWindowSession.java:710) 
     at android.view.ViewRootImpl.setView(ViewRootImpl.java:727) 
     at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:278) 
     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) 
     at android.widget.Toast$TN.handleShow(Toast.java:478) 
     at android.widget.Toast$TN$1.run(Toast.java:374) 
     at android.os.Handler.handleCallback(Handler.java:733) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5476) 
     at java.lang.reflect.Method.invokeNative(Method.java) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) 
     at dalvik.system.NativeStart.main(NativeStart.java) 

या

java.lang.RuntimeException: Adding window failed 
     at android.view.ViewRootImpl.setView(ViewRootImpl.java:726) 
     at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:278) 
     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) 
     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3038) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2368) 
     at android.app.ActivityThread.access$900(ActivityThread.java:161) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:157) 
     at android.app.ActivityThread.main(ActivityThread.java:5356) 
     at java.lang.reflect.Method.invokeNative(Method.java) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) 
     at dalvik.system.NativeStart.main(NativeStart.java) 
Caused by: android.os.TransactionTooLargeException 
     at android.os.BinderProxy.transact(Binder.java) 
     at android.view.IWindowSession$Stub$Proxy.addToDisplay(IWindowSession.java:710) 
     at android.view.ViewRootImpl.setView(ViewRootImpl.java:715) 
     at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:278) 
     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) 
     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3038) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2368) 
     at android.app.ActivityThread.access$900(ActivityThread.java:161) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:157) 
     at android.app.ActivityThread.main(ActivityThread.java:5356) 
     at java.lang.reflect.Method.invokeNative(Method.java) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) 
     at dalvik.system.NativeStart.main(NativeStart.java) 
+0

यह 'टोस्ट' से आ रहा है जिसे आप या कोई दिखा रहा है। क्या आप कोई 'टोस्ट्स' दिखा रहे हैं? क्या सिर्फ एक छोटी स्ट्रिंग से कहीं अधिक जटिल हैं? – CommonsWare

+0

हां मैं कुछ टोस्ट संदेशों में कुछ स्पैन करने योग्य स्ट्रिंग सामग्री का उपयोग कर रहा हूं: \t \t स्पैन करने योग्य स्ट्रिंग स्पैन = नया स्पैन करने योग्य स्ट्रिंग (builder.toString()); \t \t if (! IsEmptyErrorMessage) { \t \t \t span.setSpan (नई ForegroundColorSpan (this.service.getResources()। GetColor (R.color.orange_logo)), स्थिति, builder.toString()। लंबाई(), \t \t \t \t स्पैन करने योग्य.SPAN_EXCLUSIVE_EXCLUSIVE); \t \t \t span.setSpan (नया स्टाइलस्पैन (Typeface.BOLD), pos, builder.toString() लंबाई(), स्पैन करने योग्य .SPAN_EXCLUSIVE_EXCLUSIVE); \t \t} लेकिन परिणाम से अधिक नहीं है 200 अक्षर – user1026605

+0

वास्तव में मैं एक दूसरे स्टैकट्रेस जो कि 1 एक से जिस तरह से अधिक बार हो गयी। अभी भी सैमसंग उपकरणों पर ... – user1026605

उत्तर

1

पर एक नज़र लेने की जरूरत कृपया जांच करें जवाब ढेर अतिप्रवाह पर here प्रदान की सोचते हैं।

Durairaj Packirisamy लेनदेनTooLarge त्रुटि के उसी प्रश्न का उत्तर दिया जो नीचे है।

Durairaj Packirisamy कहते हैं: -

मैं इस मुद्दे का सामना करना पड़ा है, और मैंने पाया कि जब डेटा की बड़ी राशि एक सेवा और एक आवेदन, के बीच आदान-प्रदान किया जा रहा है (यह थंबनेल के बहुत सारे के हस्तांतरण शामिल है)। वास्तव में डेटा आकार लगभग 500kb था, और आईपीसी लेनदेन बफर आकार 1024 केबी पर सेट किया गया है। मुझे यकीन नहीं है कि यह लेनदेन बफर से क्यों अधिक है।

यह भी हो सकता है, जब आप आशय अतिरिक्त

के माध्यम से डेटा के बहुत से पारित जब आप अपने आवेदन में इस अपवाद मिलता है, अपने कोड का विश्लेषण करें।

क्या आप अपनी सेवाओं और एप्लिकेशन के बीच बहुत सारे डेटा का आदान-प्रदान कर रहे हैं? विशाल डेटा साझा करने के इरादे का उपयोग करके, (उदाहरण के लिए, उपयोगकर्ता गैलरी शेयर प्रेस शेयर से बड़ी संख्या में फाइलों का चयन करता है, चयनित फाइलों के यूआरआई इरादे का उपयोग करके स्थानांतरित किए जाएंगे) सेवा से बिटमैप फ़ाइलों को प्राप्त करने के लिए एंड्रॉइड का जवाब देने का इंतजार विशाल डेटा (उदाहरण के लिए, getInstalledApplications() जब अनुप्रयोग के उपयोगकर्ता स्थापित बहुत) लंबित कैसे आपरेशन के बहुत से applyBatch() का उपयोग कर जब आप इस अपवाद

यदि संभव हो तो मिलता है संभाल करने के साथ, करने के लिए बड़ा आपरेशन विभाजित छोटे भाग, उदाहरण के लिए, 1000 ऑपरेशंस के साथ ApplyBatch() को कॉल करने के बजाय, इसे प्रत्येक 100 के साथ कॉल करें।

विशाल डेटा (> 1MB) सेवाओं और आवेदन

के बीच मैं ऐसा करने के तरीके पता नहीं है का आदान-प्रदान न करें, लेकिन, एंड्रॉयड क्वेरी मत करो, बहुत बड़ा डेटा लौट सकते हैं जो :-)


मुझे: - हाल ही में मुझे भी इस समस्या का सामना करना पड़ा। मेरा मुद्दा था कि मैं कच्चे फ़ोल्डर से एसडी कार्ड में वीडियो कॉपी कर रहा था और फिर इसके थंबनेल का निर्माण कर रहा था और इसके बाद सूची दृश्य पर दिखा रहा था। यह पूरी प्रक्रिया एकल धागे पर की गई थी और अपवाद फेंक दिया गया था।मैंने कच्चे फ़ोल्डर से एसडीकार्ड में वीडियो की प्रतिलिपि बनाने, अंगूठे की नाखून बनाने और सूची में दिखाने की पूरी प्रक्रिया को अलग करके इस समस्या का समाधान किया। ये सभी कार्य 3 अलग-अलग धागे पर किए गए थे और मेरी समस्या का समाधान हो गया था।

अगर यह आपकी मदद करता है तो कृपया मुझे बताएं।

0

मुझे सैमसंग उपकरणों पर ट्रांज़ेक्शनटूलार्ज अपवाद भी मिला। मैं इरादे अतिरिक्त में बहुत विशाल HTML डेटा स्थानांतरित कर रहा था लेकिन अब मैंने बड़ी राशि डेटा को कम करके इसे हल किया है।

जब आपको ट्रांज़ेक्शनटूलार्ज एक्सेप्शन आपके आवेदन में अपवाद मिला, तो कृपया अपना कोड जांचें। इरादे अतिरिक्त में विशाल डेटा से बचें।

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