2011-06-09 66 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) 

我可以忽略? 我也尝试将tracker.trackingPageView(...)放入AsyncTask - 相同的结果。

这里是我的设置StrictMode:

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

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

我真的很感激任何帮助 - 在此先感谢! Mike

+0

我最近有同样的问题。我可以绕过我实际创建的所有事件,如trackPageView,但使用我自己的Handler或AsyncTask(尽管它看起来像移动API应该已经处理了),但由于我不控制调度,我不能解决这个问题。我认为这只是现在的事情而已。我不知道该在哪里报告,因为目前移动分析SDK是一个“实验室”项目。 – 2011-06-15 17:07:34

回答

6

查看iosched应用程序的AnalyticsUtils.java,该应用程序会在跟踪调用中执行一些asynctask魔术。然而,这是在构造函数中:

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

Uuuuhhh,坦克!!!! – 2011-07-08 05:41:22

+2

不幸的是,这并不能解决我的问题。所有的调用都是在非UI线程中完成的,但我仍然看到StrictMode抱怨,因为库仍然访问Handler中的一些SQLite数据库(< - 在UI线程中)。 :( – BoD 2012-07-02 16:03:27

4

我可以忽略吗?

你可能没有选择忽略这一点,希望分析团队改善他们的代码的一天。

+0

嗯,好的,谢谢。我希望来自GA-Team的人阅读这篇文章 – 2011-06-14 08:22:06

+0

一年后,问题仍然存在于当前分析.jar中。烦人。 – 2012-08-10 09:07:53