A volte, dopo lunghi periodi di non utilizzo della mia app quando provo ad accenderla, ottengo un ANR. Nella console di Google Play ottengo il seguente:ANR Esecuzione servizio com.example.app/com.google.android.gms.analytics.AnalyticsService
ANR Executing service my.site.app/com.google.android.gms.analytics.AnalyticsService
Ovviamente il problema è nel AnalyticsService
. Ma non ho potuto riprodurre l'ANR mentre il mio dispositivo è collegato al mio computer. E non vedo l'ANR nell'account analitico.
Questa è la mia classe di applicazione:
public class BaseApp extends Application {
public static GoogleAnalytics analytics;
public static Tracker tracker;
@Override
public void onCreate() {
analytics = GoogleAnalytics.getInstance(this);
analytics.setLocalDispatchPeriod(1800);
analytics.setDryRun(Constants.IS_DEBUG);
GoogleAnalytics.getInstance(this).getLogger().setLogLevel(Logger.LogLevel.VERBOSE);
tracker = analytics.newTracker(Constants.GOOGLE_ANALYTICS_TRACKER_ID);
tracker.enableExceptionReporting(true);
tracker.enableAdvertisingIdCollection(true);
tracker.enableAutoActivityTracking(true);
super.onCreate();
}
}
E poi nella mia classe BaseActivity:
@Override
public void onStart() {
super.onStart();
sendScreenStat();
}
protected String getScreenStatName() {
return getTitle().toString();
}
private void sendScreenStat() {
BaseApp.tracker.setScreenName(getScreenStatName());
BaseApp.tracker.send(new HitBuilders.ScreenViewBuilder().build());
}
Quale potrebbe essere la causa?
Grazie per la risposta. L'avrei fatto se non avessi visto la guida di Android Analytics dal google stesso: https://developers.google.com/analytics/devguides/collection/android/v4/#tracking-methods In particolare, dicono: "getInstance (Context) è thread-safe e può essere chiamato da qualsiasi thread". In realtà, io uso i loro campioni di codice nel mio progetto, quindi mi aspetto che funzioni correttamente. – serg66