【发布时间】:2011-07-12 21:35:15
【问题描述】:
我遇到了一个非常奇怪的情况。我正在 Android 2.1 平台上的 Java 中(通过 Eclipse Galileo)执行以下操作:
// Get gravity & geomagnetic data to return to the caller.
final int SIZE_GRAVITY = 3, SIZE_GEOMAGNETIC = 3;
final float[] NOT_USED = null;
float[] outGravity = new float[SIZE_GRAVITY];
float[] outGeomagnetic = new float[SIZE_GEOMAGNETIC];
final String NO_DATA_COULD_BE_READ = null;
boolean succeeded = SensorManager.getRotationMatrix(NOT_USED, NOT_USED, outGravity, outGeomagnetic);
if (!succeeded)
{
return NO_DATA_COULD_BE_READ;
}
Log.v("Test", "This should be printed - but it isn't!!");
// Prepare the data to return.
final int X = 0, Y = 1, Z = 2;
final String FIELD_SEPARATOR = ",", VECTOR_SEPARATOR = ";";
String returnValue = "" +
outGravity[X] + FIELD_SEPARATOR +
outGravity[Y] + FIELD_SEPARATOR +
outGravity[Z] + VECTOR_SEPARATOR +
outGeomagnetic[X] + FIELD_SEPARATOR +
outGeomagnetic[Y] + FIELD_SEPARATOR +
outGeomagnetic[Z];
// Return data.
return returnValue;
当SensorManager.getRotationMatrix(...) 返回false 时,Eclipse 调试器显示if (!succeeded) 的if 语句突然跳转到return returnValue;。不会引发异常,并且 LogCat(即使在详细模式下)也不会收到异常消息。它甚至没有收到我在代码中输入的消息。我尝试了明显的 clean-and-restart-Eclipse 方法,但没有帮助。我很困惑。
Eclipse 调试器告诉我正在调用第二条return 语句。但是,添加额外的打印语句表明第一个return 语句实际上是正在到达的语句。也许我偶然发现了一个 Eclipse 错误?或者任何人都可以解释这个异常?
【问题讨论】:
-
当我第一次在 Eclipse 中看到这种行为时有点让我震惊,但如果执行更高的 return 语句,它有时似乎会跳到方法的底部,主要是一个烦人的视觉效果。跨度>
标签: java android eclipse debugging