有时在长时间不使用我的应用程序后,当我尝试打开它时,我得到一个ANR。在谷歌播放控制台中,我得到以下内容:
ANR Executing service my.site.app/com.google.android.gms.analytics.AnalyticsService
显然问题出在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();
}
}
然后在我的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());
}
可能是什么原因?
答案 0 :(得分:-2)
由于活动生命周期方法在UI线程上运行。确保将可能需要很长时间的操作与后台线程区分开来。特别是sendScreenStat和跟踪器创建在后台线程(AsyncTask或专用线程)上运行。 在此处查看更多详细信息:http://blog.akquinet.de/2010/02/17/android-activities-the-predominance-of-the-ui-thread/