2015-06-23 13 views
6

Đôi khi sau một thời gian dài không sử dụng ứng dụng của tôi khi tôi cố gắng bật tính năng này, tôi nhận được ANR. Trong bảng điều khiển google play, tôi nhận được thông tin sau:ANR Thực hiện dịch vụ com.example.app/com.google.android.gms.analytics.AnalyticsService

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

Rõ ràng vấn đề nằm trong AnalyticsService. Nhưng tôi không thể sao chép ANR trong khi thiết bị của tôi được kết nối với máy tính của tôi. Và tôi không thấy ANR trong tài khoản phân tích.

Đây là lớp ứng dụng của tôi:

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

Và sau đó trong lớp BaseActivity tôi:

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

gì có thể là nguyên nhân?

Trả lời

-2

Là phương pháp vòng đời hoạt động chạy trên thread UI. đảm bảo các hoạt động khác nhau có thể mất nhiều thời gian cho các chủ đề nền. cụ thể là sendScreenStat và trình tạo theo dõi để chạy trên luồng nền (AsyncTask hoặc chuỗi chuyên dụng). Xem thêm chi tiết tại đây: http://blog.akquinet.de/2010/02/17/android-activities-the-predominance-of-the-ui-thread/

+4

Cảm ơn bạn đã trả lời. Tôi đã làm điều đó nếu tôi chưa thấy hướng dẫn phân tích android từ chính google: https://developers.google.com/analytics/devguides/collection/android/v4/#tracking-methods Cụ thể, họ nói: "getInstance (Bối cảnh) là chuỗi an toàn và có thể được gọi từ bất kỳ chuỗi nào". Thực ra, tôi sử dụng các mẫu mã của họ trong dự án của tôi, vì vậy tôi mong đợi nó hoạt động đúng. – serg66

Các vấn đề liên quan