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 脚本