我遇到了一个非常奇怪的情况。我正在 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;
When SensorManager.getRotationMatrix(...)
回报false
,Eclipse 调试器显示 if 语句if (!succeeded)
突然跳到return returnValue;
。不会引发任何异常,并且 LogCat(即使在详细模式下)也不会收到异常消息。它甚至没有收到我在代码中输入的消息。我尝试了明显的清理并重新启动 Eclipse 方法,但没有帮助。我很困惑。
Eclipse 调试器告诉我第二个return
正在调用声明。然而,添加额外的打印语句表明第一个return
声明实际上是正在达成的声明。也许我偶然发现了 Eclipse 错误?或者谁能解释一下这个异常现象?
好像succeeded
是假的。调试会让方法看上去像是跳到了底部return
当你做任何事时return
。前面放一个日志
return NO_DATA_COULD_BE_READ;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)