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

Posted

技术标签:

【中文标题】Android 似乎并不总是执行我的功能【英文标题】:Android seems to not always execute my function 【发布时间】:2015-06-01 15:27:42 【问题描述】:

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

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 时,有时对 method_B 有 277 次调用,有时是 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);
    


我用计数器 i 作为第三个变量调用 Method_A(),并在我拥有的 logcat 窗口中(nbiter 设置为 2) 0:0 0:1 .. 0:255 1:0 1:1 .. 1:255

【问题讨论】:

发布 Method_A() 的完整代码。什么是 ”...”? Method_A 是否有可能过早返回或跳出循环? 【参考方案1】:

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

如果你这样做

for (int i = 0; i < nbiter; i++)

 call to Method_A()

那么至少你不必担心下次调用循环时 'i' 保持非零值

【讨论】:

我不明白你的评论。主循环(变量 i)为 i 从 0 到 nbiter-1 运行一次,变量 i 已在主类(int i)中声明。对于“i”的每个值,都会执行内部循环,并且每次“j”都从值 0 开始。 很公平。我会在方法 A 之前每次记录 'i' 的值,在方法 B 之前记录 'j' 的值,然后你可以看到循环正在运行的值。 如您所见,代码中有一条 Log.d 指令,当我调用 method_A(,,i) 时输出 j 的值和对应于“i”的参数 cpt 和输出是 0:0 0:1 ... 0:255 1:0 1:1 ... 1:255 。所以这两个循环完全执行了 那么你的问题似乎没有意义。根据问题方法 b 被调用 277、330 或 333 次,而不是 512 次。但是,如果方法 b 中的 Log.d 记录了 512 次,显然该方法正在被调用,问题是有时它不会像您期望的那样输出。 我同意你的观点,但 android Studio 中包含的分析器告诉我,该方法只有 333/333 次调用......这很奇怪!

以上是关于Android 似乎并不总是执行我的功能的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 浏览器中,链接并不总是执行 onClick 导致焦点

如何在 Android 中从 Java 代码执行 Python 脚本

Android KeyStore - 密钥并不总是持久的

CoreData 中的文本并不总是被绘制

我的 Android 小部件被杀死,“不再需要 bellander.andro ....”

UIPageControl 似乎并不总是在滚动时发生变化