在一个Android程序中,我注意到一个变量的值似乎正在意外地变化。这是在我的应用程序的singleInstance活动中发生的。我必须忽略一些显而易见的事情,但是我有一个同事知道Java在看它,而她也什么也没看到。 。 。
我有一个非常简单的类,SignalItem ...
public class SignalItem {
public int signal;
public int position;
public SignalItem () {
signal = 0;
position = 0;
}
}
这是我使用它的例程(它用来做更多的事情)。 。 。
public static void add2Q(int signal, int position) {
SignalItem sigI = new SignalItem();
sigI.signal = signal; // signal=0. Step from here to ...
sigI.position = position; // ...here sigI.signal changes from 0 to 28!
}
在调试器中,输入参数signal和position为0。当我实例化sigI时,其成员也为0,因为它们应该是构造函数初始化它们的方式。但是,当我从信号分配转到位置sigI.signal的分配设置为28时。为什么/为什么?输入自变量信号保持为0。
SignalItem不是静态的-我可以创建它的多个实例(sigI2,sigI3等),并且它们不受影响。未重新输入Add2Q-在第一行上设置的断点不会再次出现。所有这些都在同一线程(Thread [ main)中发生。既然sigI是本地实例化的,如何更改?
这不是调试器的产物-如果我将它们写到logcat中,它们都反映了我在调试器中看到的内容。提前致谢。
最佳答案
使用给出的信息,没有任何东西可以修改SignalItem的实例。
检查事项:
您是否正在运行自己认为的代码?
您确定是同一实例吗?
您是否已在调试器中检查了堆栈,以查看可能来自另一个调用的位置?