2011-06-09 12 views
7

मैं Android के लिए गूगल एनालिटिक्स का उपयोग कर रहा है, लेकिन StrictMode चालू करने के बाद मैं इस तरह संदेश का एक बहुत मिलता है:StrictMode + एनालिटिक्स

StrictMode policy violation; ~duration=349 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=23 violation=2 
at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:745) 
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1345) 
at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1235) 
at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1189) 
at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1309) 
at com.google.android.apps.analytics.PersistentEventStore.peekEvents(Unknown Source) 
at com.google.android.apps.analytics.PersistentEventStore.peekEvents(Unknown Source) 
at com.google.android.apps.analytics.GoogleAnalyticsTracker.dispatch(Unknown Source) 
at com.google.android.apps.analytics.GoogleAnalyticsTracker$1.run(Unknown Source) 
at android.os.Handler.handleCallback(Handler.java:587) 
at android.os.Handler.dispatchMessage(Handler.java:92) 
at android.os.Looper.loop(Looper.java:123) 
at android.app.ActivityThread.main(ActivityThread.java:3647) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:507) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
at dalvik.system.NativeStart.main(Native Method) 

मुझे लगता है कि उपेक्षा कर सकते हैं? मैंने ट्रैकर.ट्रैकिंग पेजव्यू (...) को AsyncTask में भी डालने का प्रयास किया - एक ही परिणाम।

यहाँ StrictMode के लिए अपनी सेटिंग्स हैं:

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() 
    .detectDiskReads() 
    .detectDiskWrites() 
    .detectNetwork() 
    .penaltyLog() 
    .build()); 

    StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() 
     .detectLeakedSqlLiteObjects() 
    .penaltyLog() 
    .penaltyDeath() 
    .build()); 

मैं वास्तव में किसी भी मदद की सराहना करेंगे - अग्रिम धन्यवाद! माइक

+0

मुझे हाल ही में एक ही समस्या थी। मैं वास्तव में उन सभी घटनाओं को प्राप्त कर सकता था जो मैं वास्तव में बना रहा था, जैसे trackPageView, लेकिन अपने स्वयं के हैंडलर या असिनकटास्क का उपयोग करना (हालांकि ऐसा लगता है कि मोबाइल एपीआई पहले से ही इसे संभालना चाहिए था), लेकिन चूंकि मैं प्रेषण को नियंत्रित नहीं कर रहा हूं, इसलिए मैं नहीं कर सका पता है कि एक। मुझे लगता है कि यह अभी चीज़ के लिए बस इसके साथ एक लाइव है। मुझे नहीं पता कि यह कहां रिपोर्ट करें, क्योंकि मोबाइल एनालिटिक्स एसडीके वर्तमान में एक "प्रयोगशाला" परियोजना है। –

उत्तर

6

अपने AnalyticsUtils.java के लिए iosched ऐप देखें जो ट्रैक कॉल के आसपास कुछ एसिंक्टस्क जादू करता है। हालांकि यह कन्स्ट्रक्टर में है:

// Unfortunately this needs to be synchronous. 
    mTracker.start(UACODE, 300, mApplicationContext); 
+0

उउहुह, टैंक !!!! –

+2

दुर्भाग्य से यह मेरे लिए समस्या का समाधान नहीं करता है। सभी कॉल एक गैर यूआई थ्रेड में बनाई गई हैं, लेकिन मैं अभी भी स्ट्रिक्टोड शिकायत कर रहा हूं, क्योंकि लाइब्रेरी अभी भी हैंडलर (<- UI थ्रेड में) के अंदर कुछ SQLite डीबी तक पहुंचती है। :( – BoD

4

क्या मैं इसे अनदेखा कर सकता हूं?

आप शायद एक चारा नहीं कि अनदेखी करने के लिए नहीं है, और उम्मीद है कि Analytics टीम किसी दिन उनके कोड में सुधार।

+0

हम्म, ठीक है धन्यवाद। मुझे आशा है कि जीए-टीम के किसी व्यक्ति को इस पोस्ट को –

+0

पढ़ा जाएगा एक साल बाद और समस्या अभी भी मौजूदा एनालिटिक्स में है .jar। कष्टप्रद। –

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