我正在尝试使用谷歌分析,我获得一个空值作为例外,所以我被阻止困难继续,因为我无法继续...我将尝试逐步描述问题。< / 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”,并且没有来自异常的错误消息。
总结:
我收到的异常在以下错误消息中捕获:
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();
答案 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将不会满意)。