Android似乎并不总是执行我的功能

时间:2015-06-01 15:27:42

标签: android profiling ddms

这是我的问题:以下代码是从我的主应用程序创建的线程运行的:

for (i = 0; i < nbiter; i++)
{
 call to Method_A()
}

Method_A()是:

for (j = 0; j < 256; j++)
{
...
call to Method_B()
..
}

Method_B使用BigInteger类进行6次乘法。

现在当我运行nbiter设置为1的程序时,我看到使用DDMS探测器有256次调用method_B。 但是当nbiter设置为2时,有时会有277次调用方法_B,有时是330或333 ......但是没有512次调用。 任何人都有想法??? 感谢。

以下是Method_A()的代码:

public Point Method_A(byte[] eac, Point PhiP, int cpt)
    {
        int j;

        for (j = 0; j < 256; j++)
        {
            if (eac[j] == 0)
                PQ = PhiP.ZADDU(this);
            else
                PQ = this.ZADDU(PhiP);
            this.X = PQ[0];
            this.Y = PQ[1] ;
            PhiP.X = PQ[2] ;
            PhiP.Y = PQ[3] ;
            this.Z = PQ[4] ;
            PhiP.Z = PQ[4] ;
            Log.d("MULT",cpt+":"+j);
        }
        this.X = PQ[0];
        this.Y = PQ[1] ;
        PhiP.X = PQ[2] ;
        PhiP.Y = PQ[3] ;
        this.Z = PQ[4] ;
        PhiP.Z = PQ[4] ;
        return new Point(PQ[2],PQ[3],PQ[4],a,b,p);
    }

}

我用Counter i作为第三个变量调用Method_A(),在logcat windows中调用(nbiter设置为2) 0:0 0:1 .. 0:255 1:0 1:1 .. 1:255

1 个答案:

答案 0 :(得分:0)

我假设你已经在为for循环发布的代码中放了i = 0而不是int i = 0,这就是你在项目中也有的东西。在那种情况下'我'和你的for循环中的变量'j'没有在循环中初始化,所以你在循环后将它们设置为零吗?

如果你这样做

for (int i = 0; i < nbiter; i++)
{
 call to Method_A()
}

那么至少你不必担心下次调用循环时'我'持有一个非零值