Android getTracker()为Google Analytics返回NULL
我们的代码现在已经在现场运行了9个多月,没有任何问题,但已经开始收到应用程序随机崩溃的报告(报告表明它只在安卓4.1和4.2上运行,无法很好地复制)。代码关注的是一个小部件,它从我们的API获取数据列表(图像URL和文本),并在桌面上的旋转小部件中显示。这些小部件运行下面的RemoteViewsService,在onDataSetChanged()上跟踪显示的内容Android getTracker()为Google Analytics返回NULL,android,google-analytics,Android,Google Analytics,我们的代码现在已经在现场运行了9个多月,没有任何问题,但已经开始收到应用程序随机崩溃的报告(报告表明它只在安卓4.1和4.2上运行,无法很好地复制)。代码关注的是一个小部件,它从我们的API获取数据列表(图像URL和文本),并在桌面上的旋转小部件中显示。这些小部件运行下面的RemoteViewsService,在onDataSetChanged()上跟踪显示的内容 //// widget service class WidgetRemoteViewsService extends RemoteV
//// widget service
class WidgetRemoteViewsService extends RemoteViewsService implements RemoteViewsFactory
{
... (other methods)
@Override
public void onDataSetChanged()
{
... (get data, do stuff)
for ( Campaign campaign : campaigns )
{
GoogleAnalyticsTracker.trackEvent(getApplicationContext(), campaign.getGuid());
}
}
}
//////// tracking code
protected static void trackEvent(Context context, String campaignGuid)
{
EasyTracker easyTracker = EasyTracker.getInstance();
easyTracker.setContext(context);
Tracker tracker = EasyTracker.getTracker(); // getTracker returns null
if ( StringUtils.isNotBlank(campaignGuid) )
{
tracker.setCustomDimension(CAMPAIGN_GUID_DIMENSION_ID, campaignGuid);
}
... (set other tracking data)
tracker.trackEvent(category, action, label, null);
easyTracker.dispatch();
}
我们的analytics.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="https://schemas.android.com/tools" tools:ignore="TypographyDashes">
<string name="ga_trackingId">UA-9999999-33</string>
<bool name="ga_debug">false</bool>
<bool name="ga_autoActivityTracking">false</bool>
<bool name="ga_reportUncaughtExceptions">true</bool>
<integer name="ga_dispatchPeriod">300</integer>
</resources>
该错误很少发生,而且似乎是随机发生的(当平板电脑解锁、打开/关闭应用程序等),并且日志中没有其他迹象表明是任何原因造成的。我们正在运行Google Analytics JAR的v2。我也会在开发控制台上收到随机崩溃报告,一两个月后就会收到一份,奇怪的是,这些崩溃没有在Crashlytics中报告,当然也没有在Google Analytics中报告。我得到这些:
原因:java.lang.IllegalStateException:在调用getTracker()之前,必须调用EasyTracker.getInstance().setContext(上下文)或startActivity(活动)。我不知道该怎么办。
11-14 13:08:37.651: W/GAV2(7863): Thread[Binder_2,5,main]: Connection to service failed 1
11-14 13:08:37.651: W/ActivityManager(259): Unable to start service Intent { act=com.google.android.gms.analytics.service.START (has extras) }: not found
11-14 13:08:37.691: W/GAV2(7863): Thread[Binder_2,5,main]: Need to call initialize() and be in fallback mode to start dispatch.
11-14 13:08:37.691: E/AndroidRuntime(7863): FATAL EXCEPTION: Binder_1
11-14 13:08:37.691: E/AndroidRuntime(7863): java.lang.NullPointerException
11-14 13:08:37.691: E/AndroidRuntime(7863): at com.fake.tracking.GoogleAnalyticsTracker.trackEvent(GoogleAnalyticsTracker.java:58)