2010-07-12 7 views
6

मैं एंड्रॉइड के लिए Google Analytics का उपयोग ईवेंट को ट्रैक करने, एंड्रॉइड ऐप पर पेज दृश्यों का उपयोग करने के लिए कर रहा हूं। जब ट्रैकर के प्रेषण विधि बुला, मैं एक RuntimeException प्राप्त करते हैं:एंड्रॉइड के लिए Google Analytics से रनटाइम अपवाद "मृत थ्रेड पर हैंडलर को संदेश भेजना"

07-12 18:02:05.594: WARN/MessageQueue(12823): Handler{44a08620} sending message to a Handler on a dead thread 
07-12 18:02:05.594: WARN/MessageQueue(12823): java.lang.RuntimeException: Handler{44a08620} sending message to a Handler on a dead thread 
07-12 18:02:05.594: WARN/MessageQueue(12823):  at android.os.MessageQueue.enqueueMessage(MessageQueue.java:179) 
07-12 18:02:05.594: WARN/MessageQueue(12823):  at android.os.Handler.sendMessageAtTime(Handler.java:457) 
07-12 18:02:05.594: WARN/MessageQueue(12823):  at android.os.Handler.sendMessageDelayed(Handler.java:430) 
07-12 18:02:05.594: WARN/MessageQueue(12823):  at android.os.Handler.post(Handler.java:248) 
07-12 18:02:05.594: WARN/MessageQueue(12823):  at com.google.android.apps.analytics.NetworkDispatcher$DispatcherThread.dispatchEvents(Unknown Source) 
07-12 18:02:05.594: WARN/MessageQueue(12823):  at com.google.android.apps.analytics.NetworkDispatcher.dispatchEvents(Unknown Source) 
07-12 18:02:05.594: WARN/MessageQueue(12823):  at com.google.android.apps.analytics.GoogleAnalyticsTracker.dispatch(Unknown Source) 
07-12 18:02:05.594: WARN/MessageQueue(12823):  at com.company.activity.set(MyActivity.java:177) 
07-12 18:02:05.594: WARN/MessageQueue(12823):  at com.company.activity.access$34(MyActivity.java:175) 
07-12 18:02:05.594: WARN/MessageQueue(12823):  at com.company.activity.$45.onClick(MyActivity.java:1982) 
07-12 18:02:05.594: WARN/MessageQueue(12823):  at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:158) 
07-12 18:02:05.594: WARN/MessageQueue(12823):  at android.os.Handler.dispatchMessage(Handler.java:99) 
07-12 18:02:05.594: WARN/MessageQueue(12823):  at android.os.Looper.loop(Looper.java:123) 
07-12 18:02:05.594: WARN/MessageQueue(12823):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
07-12 18:02:05.594: WARN/MessageQueue(12823):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-12 18:02:05.594: WARN/MessageQueue(12823):  at java.lang.reflect.Method.invoke(Method.java:521) 
07-12 18:02:05.594: WARN/MessageQueue(12823):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
07-12 18:02:05.594: WARN/MessageQueue(12823):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
07-12 18:02:05.594: WARN/MessageQueue(12823):  at dalvik.system.NativeStart.main(Native Method) 

--EDIT-- पहले मैं आश्वस्त था यह ट्रैकर की मेरी नियुक्ति के साथ करना था, onResume, धागे, आदि में डालने पर जादुई इसे अपवाद फेंक दिया। , पता चला है Google's own example code (भी अपने एसडीके डाउनलोड में उपलब्ध है) भी इस अपवाद फेंकता है:

>07-12 23:47:09.343: WARN/MessageQueue(18468): null sending message to a Handler on a dead thread 
07-12 23:47:09.343: WARN/MessageQueue(18468): java.lang.RuntimeException: null sending message to a Handler on a dead thread 
07-12 23:47:09.343: WARN/MessageQueue(18468):  at android.os.MessageQueue.enqueueMessage(MessageQueue.java:179) 
07-12 23:47:09.343: WARN/MessageQueue(18468):  at android.os.Looper.quit(Looper.java:173) 
07-12 23:47:09.343: WARN/MessageQueue(18468):  at com.google.android.apps.analytics.NetworkDispatcher.stop(Unknown Source) 
07-12 23:47:09.343: WARN/MessageQueue(18468):  at com.google.android.apps.analytics.NetworkDispatcher.init(Unknown Source) 
07-12 23:47:09.343: WARN/MessageQueue(18468):  at com.google.android.apps.analytics.GoogleAnalyticsTracker.start(Unknown Source) 
07-12 23:47:09.343: WARN/MessageQueue(18468):  at com.google.android.apps.analytics.GoogleAnalyticsTracker.start(Unknown Source) 
07-12 23:47:09.343: WARN/MessageQueue(18468):  at com.google.android.apps.analytics.GoogleAnalyticsTracker.start(Unknown Source) 
07-12 23:47:09.343: WARN/MessageQueue(18468):  at com.google.android.apps.analytics.sample.AnalyticsSample.onCreate(AnalyticsSample.java:23) 
07-12 23:47:09.343: WARN/MessageQueue(18468):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
07-12 23:47:09.343: WARN/MessageQueue(18468):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
07-12 23:47:09.343: WARN/MessageQueue(18468):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
07-12 23:47:09.343: WARN/MessageQueue(18468):  at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3815) 
07-12 23:47:09.343: WARN/MessageQueue(18468):  at android.app.ActivityThread.access$2400(ActivityThread.java:125) 
07-12 23:47:09.343: WARN/MessageQueue(18468):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2037) 
07-12 23:47:09.343: WARN/MessageQueue(18468):  at android.os.Handler.dispatchMessage(Handler.java:99) 
07-12 23:47:09.343: WARN/MessageQueue(18468):  at android.os.Looper.loop(Looper.java:123) 
07-12 23:47:09.343: WARN/MessageQueue(18468):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
07-12 23:47:09.343: WARN/MessageQueue(18468):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-12 23:47:09.343: WARN/MessageQueue(18468):  at java.lang.reflect.Method.invoke(Method.java:521) 
07-12 23:47:09.343: WARN/MessageQueue(18468):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
07-12 23:47:09.343: WARN/MessageQueue(18468):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
07-12 23:47:09.343: WARN/MessageQueue(18468):  at dalvik.system.NativeStart.main(Native Method) 

यह तब होता है जब आप मूल गतिविधि नष्ट हो (अर्थात बदलते अभिविन्यास, होम स्क्रीन, आदि के लिए जा रहा) के लिए मजबूर। मैं मूल ट्रैकर ऑब्जेक्ट को सहेजे गए इंस्टेंस के माध्यम से संग्रहीत नहीं कर सकता, क्योंकि ट्रैकर एक पार्सलबल नहीं है। कोई अन्य विचार, सुराग कैसे इस त्रुटि से छुटकारा पाने के लिए?

>07-13 00:50:02.581: WARN/googleanalytics(27605): Dispatcher thinks it finished, but there were -4 failed events 

सबसे उनकी उंगलियों में घटनाक्रम या पृष्ठ दृश्यों जो भ्रष्ट व्हाइटस्पेस वापस करने के लिए बात यह ऑनलाइन का उल्लेख करते हुए:

--EDIT-- भी अजनबी है, यह है कि इस को भी निम्न समस्या का कारण है लगता है डीबी, मैंने यह पुष्टि की है कि यह मामला न हो। साथ ही, मुझे यकीन नहीं है कि नकारात्मक घटना होने का क्या मतलब है (-4)!

+1

मुझे लगता है कि इस मुद्दे के बिना कुछ समय के लिए एंड्रॉयड में GA का उपयोग किया गया है अब पुन: बनाने में एक प्रेषण कर सकता है, अजीब। मैंने इसी तरह के मुद्दों के बारे में वेब पर कुछ शिकायतें पढ़ीं। क्या आपने इसे सेवा में चलाने की कोशिश की है? किंडा ओवरकिल, लेकिन अगर यह मदद करता है ... रिकॉर्ड के लिए, मैं ऑन पॉज़() में भेजता हूं और इसमें कोई समस्या नहीं है। मैं रेज़्यूम() में प्रेषण की अनुशंसा नहीं करता, क्योंकि AFAIK GA घटनाओं के टाइमस्टैम्प बंद हो सकता है (जब ईवेंट भेजा जाता है तो समय लिया जाता है, जब यह रिकॉर्ड नहीं किया जाता है)। –

उत्तर

1

आप onPause()

tracker.dispatch(); 

डेटा को खोने से बचने के लिए और फिर नजर

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