Hie*_*lko 18 java optimization android runtime-error samsung-mobile
在Android Studio中开发Android应用时,while循环中使用的变量的值不正确.我在测试用例中将它减少到一个非常简单的情况:
方法onStart:
@Override
public void onStart() {
super.onStart();
int count = 2;
int index = 1;
int value = 23;
Log.i("test", "value before = " + value);
while (index < count) {
Log.i("test", "value in while loop = " + value);
index++;
value = 0;
}
}
Run Code Online (Sandbox Code Playgroud)
执行测试应用程序时的输出是:
value before = 23
value in while loop = 0
Run Code Online (Sandbox Code Playgroud)
而结果应该是
value in while loop = 23
Run Code Online (Sandbox Code Playgroud)
在调试时,结果如预期的那样('while while = 23'中的值),但在常规的调试版本中,它是错误的.主活动类的反汇编代码看起来没问题,变量'value'的值在while循环体的末尾设置为0.当while循环体中的某些代码或函数使用变量'value'时,它将具有值0而不是23.在测试用例中,我使用Log语句来简化.
当我改变线路时,它不会出错
value = 0;
Run Code Online (Sandbox Code Playgroud)
至
if (value == 23) {
value = 0;
}
Run Code Online (Sandbox Code Playgroud)
或当我删除该行
value = 0;
Run Code Online (Sandbox Code Playgroud)
所以它看起来像一些优化错误.但是做了什么优化可能导致这种情况?它使代码不可靠.
如果你确实确定编写的代码可以正确运行,那么从现在开始,你必须开始检查(有序):
也许您必须提供有关您的环境的一些详细信息,例如 Java 版本、Android 最低版本、操作系统或您正在使用的 IDE。
我希望这些要点能让您产生一些正确的联想来解决您的问题。
| 归档时间: |
|
| 查看次数: |
837 次 |
| 最近记录: |