Google Analytics(分析)粉碎时出现null异常,错误为com.google.android.gms.analytics.GoogleAnalytics.getInstance(未知来源)

时间:2015-02-05 22:12:41

标签: android google-analytics

我正在尝试使用谷歌分析,我获得一个空值作为例外,所以我被阻止困难继续,因为我无法继续...我将尝试逐步描述问题。< / p>

1)我的应用程序类(Application)有以下方法来获取跟踪器:

public synchronized Tracker getTracker(TrackerName trackerId) {
    if (!mTrackers.containsKey(trackerId)) {
      GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
      Tracker t =  analytics.newTracker(ApplicationData.ANALYTICS_ID);
      mTrackers.put(trackerId, t);

    }
    return mTrackers.get(trackerId);
  }

2)我在我的应用程序中运行后台服务。在这项服务中,我有这个错误捕获:

    try {
              this.mymethod();
          } catch (Exception e) {
              Log.e(ApplicationData.APP_TAG, TAG + ":Error at first actions running " + e.getMessage());
          }

3)在类mymethod中,我执行了几个动作......直到我调用getTracker方法。在mymethod中,这是我收到错误的部分:

    Application app = Application .getInstance();
    Tracker t = app.getTracker(
            TrackerName.APP_TRACKER);
    // Build and send an Event.
    t.send(new HitBuilders.EventBuilder()
        .setCategory(ApplicationData.ANALYTICS_EVENT_SYNC)
        .setAction(action)
        .setLabel(label)
        .build());

好的,这就是问题,当我调用方法“getTracker”时,我有一个异常上升。但是,获得的值为“null”,并且没有来自异常的错误消息。

总结:

  • 我从2)
  • 调用方法“this.mymethod()”
  • mymethod()包含代码3)。
  • 代码3)从1)中描述的应用程序中获取实例。
  • 我从2)的try / catch中收到了一个例外“e”

我收到的异常在以下错误消息中捕获:

              Log.e(ApplicationData.APP_TAG, TAG + ":Error at first actions running " + e.getMessage());

我收到此消息:

  ....:Error at first actions running null

进行一些调试我发现应用程序在这里失败,没有来自null值的任何异常appart:

      GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);

有人知道发生了什么吗?我纠正了我调用应用程序的方式。绝对没有我可以使用的信息。

修改

感谢@djabi,我能够为异常提供更多数据:

java.lang.NullPointerException  
android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:114)   
com.google.android.gms.analytics.x.<init>(Unknown   Source)
com.google.android.gms.analytics.x.A(Unknown    Source)
com.google.android.gms.analytics.GoogleAnalytics.<init>(Unknown Source)
com.google.android.gms.analytics.GoogleAnalytics.getInstance(Unknown    Source)
myapp.Application.getTracker(Application.java:231)  
myapp.sendEvent(GenericSync.java:81)    
myapp(Check.java:72)    
myapp.firstActions(UpdatingService.java:199)    
myapp.onHandleIntent(UpdatingService.java:144)  
android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)   
android.os.Handler.dispatchMessage(Handler.java:102)    
android.os.Looper.loop(Looper.java:146) 
android.os.HandlerThread.run(HandlerThread.java:61) 

其中:

Application.java:231上的

myapp.Application.getTracker是:

 GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
GenericSync.java:81上的

myapp.sendEvent是:

Tracker t = app.getTracker(
        TrackerName.APP_TRACKER);
Check.java:72的myapp是:

 this.mymethod();

1 个答案:

答案 0 :(得分:1)

Trebia,在您尝试访问GoogleAnalytics时,您的应用程序似乎尚未初始化。当调用getApplicationContext()时,您向GoogleAnalayitcs.getSingleton()提供的上下文将返回null。您是否尝试从Application构造函数或静态初始化程序初始化GoogleAnalytics?如果是这种情况,请尝试在Application.onCreate()方法内将调用移至GoogleAnalytics.getSingleton(context)。如果您尚未这样做,则需要提供自定义应用程序类扩展Android Application类并更新您的应用程序清单&#34; name&#34;属性与您的应用程序完整的类名。

在初始化应用程序之后和创建任何其他Android对象之前,保证在主线程上调用Application.onCreate(从工作线程初始化时Google Analytics将不会满意)。