Строгий режим + аналитика

Я использую Google Analytics для Android, но после включения 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());

Буду очень признателен за любую помощь - заранее спасибо! Майк


person Mike Mitterer    schedule 09.06.2011    source источник
comment
Недавно у меня была такая же проблема. Я мог бы обойти все события, которые я на самом деле создавал, например trackPageView, но используя свой собственный обработчик или AsyncTask (хотя кажется, что мобильный API уже должен был обработать это), но поскольку я не контролирую отправку, я не мог адрес того. Я думаю, что это просто жить с этим на данный момент. Я также не знаю, куда сообщить об этом, так как SDK для мобильной аналитики в настоящее время является лабораторным проектом.   -  person Charlie Collins    schedule 15.06.2011


Ответы (2)


Ознакомьтесь с приложением iosched, чтобы узнать об их AnalyticsUtils.java, который делает некоторую магию асинхронной задачи вокруг трека звонки. Однако в конструкторе есть:

    // Unfortunately this needs to be synchronous.
    mTracker.start(UACODE, 300, mApplicationContext);
person Kevin TeslaCoil    schedule 07.07.2011
comment
К сожалению, это не решает проблему для меня. Все вызовы выполняются в потоке, отличном от пользовательского интерфейса, но я все еще вижу, что StrictMode жалуется, потому что библиотека все еще обращается к некоторой базе данных SQLite внутри обработчика (‹- в потоке пользовательского интерфейса). :( - person BoD; 02.07.2012

Могу ли я игнорировать это?

Вероятно, у вас нет другого выбора, кроме как проигнорировать это и надеяться, что команда Google Analytics когда-нибудь улучшит свой код.

person CommonsWare    schedule 09.06.2011
comment
Хм, хорошо, спасибо. Я надеюсь, что кто-то из GA-Team прочитает этот пост - person Mike Mitterer; 14.06.2011
comment
Прошло больше года, а проблема все еще в текущей аналитике .jar. Раздражающий. - person Reuben Scratton; 10.08.2012