[問題]有辦法在handleMessage中實現pause/resume嗎?

看板AndroidDev作者 (布魯)時間11年前 (2014/03/27 23:31), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串1/1
如題,各位板友好,由於我的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
在電話打來的時候UI不是本來就會停止更新嗎?
03/28 13:40, 1F

03/28 19:25, , 2F
抱歉,是我沒講清楚,是跳Dialog
03/28 19:25, 2F

03/28 19:33, , 3F
後來後來知道sendMessageDelayed是先送到queue中,一段時
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
為甚麼不直接用ACTION判斷就好了
03/29 19:00, 6F
文章代碼(AID): #1JD4GyrK (AndroidDev)