[問題] 不影響迴圈效率情況下倒數

作者: 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