在我的代号为一个应用程序中,所有路由都是在一个看起来像这样的方法中完成的:
if (AnalyticsService.isEnabled()) {
AnalyticsService.visit(route.toString(), route.getPrevious());
}
switch (route) {
case Home:
HomeFormManager.getInstance().showForm();
break;
case Loading:
LoadingFormManager.getInstance().showForm();
break;
case Error:
ErrorFormManager.getInstance().showForm();
break;
// some other forms here
default:
break;
}
这个想法很明显,每次我们转到新表格时,我们都会在分析中注册。这段代码直到今天仍然完美无瑕。现在,如果我们要转到错误表单,突然我们调用visit
方法的行会完全阻止应用程序的流程。经过一些调试后,我发现应用程序卡在了AnalyticsService.GetGARequest中,特别是在Log.getUniqueDeviceId中,其中发送了对设备ID的请求以代码一个构建服务器,然后永远等待响应。其他表单不会发生这种情况,因为只有我调用Preferences.clearAll()的Error表单,因此对于其他表单,Log.getUniqueDeviceId直接返回首选项中的id。但是,由于我的应用程序中的逻辑,我必须调用Preferences.clearAll()。任何想法如何解决这个问题以及最近的变化导致了什么?