[問題]有辦法在handleMessage中實現pause/resume嗎?
如題,各位板友好,由於我的APP執行時遇到電話響起需要暫停UI的更新,
所以我做了一些判斷。以下是我部分的程式碼
//UI一直在動一直在動~~~
//當電話響起時送出一個message
sendEmptyMessage(PAUSE_WAIT_PHONE_CALL);
//message會送到一個Handler進行處理
private Handler mHandler = new Handler(){
public void handleMessage(Message pMsg)
{
super.handleMessage(pMsg);
switch(pMsg.what){
case DO_ONETHING:
//做某些事
break;
case PAUSE_WAIT_PHONE_CALL:
waitforcall();
//判斷通話狀態,等待通話結束後做其他事
break;
}
}
}
public void waitforcall() {
TelephonyManager t = TelephonyManager.getDefault();
if (t != null) {
if (t.getCallState() > 0) {//代表電話響起或是已經在通話中的狀態
mHandler.sendMessageDelayed(
mHandler.obtainMessage(PAUSE_WAIT_PHONE_CALL), 3000);
//在3秒後送出一個message給mHandler.handleMessage
//目的是為了檢查3秒後的通話狀態
//但是在這邊就遇到一個問題,我沒有辦法保證送出message的3秒內
//會不會有其他的message被送到handleMessage中去執行
//由於效能的考量,我沒辦法用Thread.sleep(3000);
//或是開新的Thread去做這件事
//所以想請問一下各位板友,有辦法在handleMessage中實現類似
//paused/resume或是suspand MessageQueue的方法嗎?
} else if (t == null || t.getCallState <= 0) {
//通話結束後,繼續做其他事情
}
}
}
在這裡先感謝各位的協助~~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.158.102.37
※ 文章網址: http://www.ptt.cc/bbs/AndroidDev/M.1395934268.A.D54.html
※ 編輯: booloo 來自: 49.158.102.37 (03/27 23:32)
→
03/28 13:40, , 1F
03/28 13:40, 1F
→
03/28 19:25, , 2F
03/28 19:25, 2F
→
03/28 19:33, , 3F
03/28 19:33, 3F
→
03/28 19:33, , 4F
03/28 19:33, 4F
→
03/28 19:33, , 5F
03/28 19:33, 5F
推
03/29 19:00, , 6F
03/29 19:00, 6F