在一个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的实例。

检查事项:


您是否正在运行自己认为的代码?
您确定是同一实例吗?
您是否已在调试器中检查了堆栈,以查看可能来自另一个调用的位置?

08-04 19:43