ANR执行服务com.example.app/com.google.android.gms.analytics.AnalyticsService
有时,在长时间不使用我的应用程序后,当我尝试打开它时,我会得到一个ANR。在google play控制台中,我得到以下信息:ANR执行服务com.example.app/com.google.android.gms.analytics.AnalyticsService,android,google-analytics,Android,Google Analytics,有时,在长时间不使用我的应用程序后,当我尝试打开它时,我会得到一个ANR。在google play控制台中,我得到以下信息: ANR Executing service my.site.app/com.google.android.gms.analytics.AnalyticsService 显然问题出在分析服务中。但是,当我的设备连接到我的计算机时,我无法复制ANR。我在分析账户中没有看到ANR 这是我的应用程序类: public class BaseApp extends Applicat
ANR Executing service my.site.app/com.google.android.gms.analytics.AnalyticsService
显然问题出在分析服务中。但是,当我的设备连接到我的计算机时,我无法复制ANR。我在分析账户中没有看到ANR
这是我的应用程序类:
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();
}
}
然后在我的基本活动课上:
@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());
}
原因可能是什么?因为活动生命周期方法在UI线程上运行。确保对后台线程执行可能需要很长时间的不同操作。特别是要在后台线程(异步任务或专用线程)上运行的sendScreenStat和跟踪器创建。
请参阅此处的更多详细信息:谢谢您的回答。如果我没有看到谷歌自己的android分析指南,我会这么做:具体来说,他们说:“getInstance(Context)是线程安全的,可以从任何线程调用”。实际上,我在我的项目中使用了他们的代码示例,所以我希望它能正常工作。