2015-06-23 21 views
6

Bazen, uygulamayı açmaya çalıştığımda uygulamamı kullanmama uzun süre sonra bir ANR alıyorum.ANR Execute service com.example.app/com.google.android.gms.analytics.AnalyticsService

ANR Executing service my.site.app/com.google.android.gms.analytics.AnalyticsService 

Açıkçası sorun AnalyticsService içindedir: google oyun konsolunda aşağıdaki alıyorum. Ancak cihazım bilgisayarıma bağlıyken ANR'yi yeniden oluşturamadım. Ve analitik hesapta ANR'yi göremiyorum.

Bu benim Uygulama sınıftır: my BaseActivity sınıfında

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(); 
    } 
} 

Ve sonra:

@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()); 
} 

ne sebep olabilir?

cevap

-2

Etkinlik yaşam döngüsü yöntemleri, UI iş parçacığı üzerinde çalışır. Arka plan iş parçacıklarına uzun sürebilecek işlemlerin farklı olduğundan emin olun. Özellikle backgroundScreenStat ve izleyici oluşturma, arka plan iş parçacığı üzerinde çalışacak (AsyncTask veya adanmış iş parçacığı). Daha fazla ayrıntı için bakınız: http://blog.akquinet.de/2010/02/17/android-activities-the-predominance-of-the-ui-thread/

+4

Cevabınız için teşekkür ederiz. Google Analytics'ten android analiz kılavuzunu görmemiş olsaydım bunu yapardım: https://developers.google.com/analytics/devguides/collection/android/v4/#tracking-methods Özellikle şunları söylüyorlar: "getInstance (Context) iş parçacığı güvenlidir ve herhangi bir iş parçacığından çağrılabilir". Aslında, kendi kod örneklerini projemde kullanırım, bu yüzden düzgün çalışmasını beklerim. – serg66