Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.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)

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

like image 679
Mike Mitterer Avatar asked Jun 09 '11 07:06

Mike Mitterer


People also ask

What is the StrictMode?

StrictMode is a developer tool which detects things you might be doing by accident and brings them to your attention so you can fix them. StrictMode is most commonly used to catch accidental disk or network access on the application's main thread, where UI operations are received and animations take place.

What is StrictMode policy violation?

StrictMode (android. os. StrictMode) class can be used to enable and enforce various policies that can be checked for and reported upon. This can be a StrictMode violation in executing a disk write violation that occurs when you are performing disk writes on the main UI thread.

How do I enable StrictMode?

To enable and configure the StrictMode in your application, you require to use setThreadPolicy() and setVmPolicy() methods of StrictMode. It is a good practice to set policies either in Application class or initial activity.


1 Answers

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);
like image 180
Kevin TeslaCoil Avatar answered Oct 25 '22 10:10

Kevin TeslaCoil