【发布时间】:2012-11-26 07:49:23
【问题描述】:
我有一个 Android 应用程序在我的 dispatchTouchEvent 实现中在某些设备上崩溃并出现 NullPointerException。我实际上从未在我的任何设备上看到过崩溃,但它每天在现场发生很多次,因为我在自己的分析和 Android 开发者控制台中都看到了崩溃。问题是我很难弄清楚这种崩溃是如何发生的。这是相关代码(我在代码中标记了“CRASH HERE ->”抛出NullPointerException的地方):
if (…)
{
...
}
else if (event != null)
{
if (event.getAction() == MotionEvent.ACTION_DOWN) {
motionStartX = event.getX();
motionStartY = event.getY();
}
else if (event.getAction() == MotionEvent.ACTION_UP)
{
...
if (...)
{
...
}
else if (event != null && event.getPointerCount() > 0 &&
/*** CRASH HERE -> ***/(Math.abs(motionStartX - event.getX()) > 5 ||
Math.abs(motionStartY - event.getY()) > 5))
{
...
}
}
}
根据我的理解,如果event 是null,则可能引发 NullPointerException 的唯一方法,但是,在它上面的行上,我添加了一些偏执检查 event 是 null 甚至那个事件有指针。尽管如此,我还是遇到了崩溃。我觉得我错过了什么。有人对此有任何见解吗?
【问题讨论】:
-
正如我在问题中所说,我无法在我的设备上重现此问题,因此我看不出我的 logcat 输出会有什么用处。
标签: android nullpointerexception