Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ANR执行服务com.example.app/com.google.android.gms.analytics.AnalyticsService_Android_Google Analytics - Fatal编程技术网

ANR执行服务com.example.app/com.google.android.gms.analytics.AnalyticsService

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。在google play控制台中,我得到以下信息:

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)是线程安全的,可以从任何线程调用”。实际上,我在我的项目中使用了他们的代码示例,所以我希望它能正常工作。