[问题] 不影响循环效率情况下倒数

楼主: XperiaZ6C (真●安卓轻旗舰)   2018-12-09 18:58:49
我尝试写一个函数来计算手机打电话的call setup time
先用dialTime记下拨出去时候的时间
然后用while循环不断去确认手机是否有收到响铃声
当inCall()函数回传值True时表示这通电话已经进入连结状态
当foregroundCallState值为4的时候就是收到响铃声了
此时就用当下时间减去拨号时间
即能顺利得到call setup time
平均每通VoLTE call的call setup time约0.5xxxxx秒
程式码如下图
https://i.imgur.com/SSCJmXr.png
我的问题是后面被我注解的那三行
因为有一种例外状况是手机按下拨号
却未如预期般地拨出而直接结束了这通电话
即inCall()函数会永远都是False值而卡在无限循环
所以被我注解的部分原本概念是
若是拨号10秒之后发现并没有成功进入连接状态就回传-1结束
但是因为多跑了这一个确认步骤
让我的VoLTE call的call setup time暴增到约1.2xxxxx秒
想请问有没有什么方法在不影响循环执行效率的情况下倒数吗?
至于为什么不直接处理inCall()回传False的原因是循环执行速度太快了
按下拨号的瞬间
程式码会跑得比电话进入连接状态还要快
意即电话还没进入连结状态之前循环就已经做出判断了
所以若是多处理这步的话
那不管电话是不是真的有接通
都会先进入到inCall() == False这个部分
还请各位前辈指点一下
或是我用无限循环来做计算这个想法本身就是很大的bug?
谢谢各位
作者: v86861062 (数字人:3)   2018-12-09 19:51:00
图片打不开:(
作者: ThxThx (洗洗睡)   2018-12-09 22:24:00

Links booklink

Contact Us: admin [ a t ] ucptt.com