Android API的更改会以某种方式影响代码
我一直在网上文档中查找问题的原因,但似乎找不到它 我的代码在API 19上运行良好,但在API 22上似乎无法正常工作 这是代码-Android API的更改会以某种方式影响代码,android,handler,runnable,android-5.1.1-lollipop,Android,Handler,Runnable,Android 5.1.1 Lollipop,我一直在网上文档中查找问题的原因,但似乎找不到它 我的代码在API 19上运行良好,但在API 22上似乎无法正常工作 这是代码- @Override public void run() { if(!killMe) { if (countCycles != 5) { if (++countPress == 2 ) { takeTwoBreaths();
@Override
public void run() {
if(!killMe) {
if (countCycles != 5) {
if (++countPress == 2 ) {
takeTwoBreaths();
} else {
mActivity.playMetronomeTick();
mStartMetronomeHandler.postDelayed(this, mActivity.getMetronomeTimeUntilFinish());
}
} else { //we have finished 5 cycles
countCPRs++;
this.stop();
mActivity.playFinishCPR();
mActivity.checkPulse(countCPRs);
newLog("Check pulse");
}
}
}
private void takeTwoBreaths() {
countCycles++;
countPress = 0; // reset counter
mActivity.playTakeTwoBreaths();
mStartMetronomeHandler.postDelayed(this,6000); //start again in 6s
}
它在API 19上的工作方式(以及应该如何工作)-首先启动此Runnable
,
然后它执行playMetronomeTick()
,之后它将自己发布到处理程序,在18秒内被调用。完成后,将调用TakeTwoBreats()
,然后调用PlayTakeTwoBreats()
,并将其自身发布为在6秒内调用。这个循环重复5次
它在API 22上所做的事情-第一个周期按计划进行(有时),然后当第二个周期到来时,taketwoartheats()
调用playtaktwoartheats()
将自身设置为在6s内调用,然后在经过这些6s后,run()
调用2x
有人知道这里发生了什么吗
我的估计正确吗,这可能是API问题,还是我在代码中搞错了什么?Logcat中的任何内容看起来都很有趣?没有什么特别的,可能只是这个-暂停所有线程需要19.197ms-和一些跳过的帧。。。没有别的了…看看蓝色的logcat线条。“挂起所有线程”这句话是在转移注意力——这很常见。如果你仍然陷在困境中——我建议在你的代码中加入一些日志行——如果没有更具体的信息,我想很难缩小范围。事实上,我通过删除整个代码并重新编写来修复它。仍然不知道为什么它不起作用。。。