Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android API的更改会以某种方式影响代码_Android_Handler_Runnable_Android 5.1.1 Lollipop - Fatal编程技术网

Android API的更改会以某种方式影响代码

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();

我一直在网上文档中查找问题的原因,但似乎找不到它

我的代码在API 19上运行良好,但在API 22上似乎无法正常工作

这是代码-

@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线条。“挂起所有线程”这句话是在转移注意力——这很常见。如果你仍然陷在困境中——我建议在你的代码中加入一些日志行——如果没有更具体的信息,我想很难缩小范围。事实上,我通过删除整个代码并重新编写来修复它。仍然不知道为什么它不起作用。。。