StrictMode + Analytics
I am using Google Analytics for Android but after turning on StrictMode I get a lot of message like this:
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.Meth开发者_高级运维od.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)
Can I ignore that? I also tried to put tracker.trackingPageView(...) into AsyncTask - same Result.
Here are my settings for StrictMode:
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.penaltyLog()
.penaltyDeath()
.build());
I would really appreciate any help - thanks in advance! Mike
Check out the iosched app for their AnalyticsUtils.java which does some asynctask magic around track calls. There is however this in the constructor:
// Unfortunately this needs to be synchronous.
mTracker.start(UACODE, 300, mApplicationContext);
Can I ignore that?
You probably do not have a choice but to ignore that, and hope that the Analytics team improves their code someday.
精彩评论