看板 AndroidDev 關於我們 聯絡資訊
如題,各位板友好,由於我的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)
btsken:在電話打來的時候UI不是本來就會停止更新嗎? 03/28 13:40
booloo:抱歉,是我沒講清楚,是跳Dialog 03/28 19:25
booloo:後來後來知道sendMessageDelayed是先送到queue中,一段時 03/28 19:33
booloo:間後再執行 03/28 19:33
booloo:所以不會產生我描述的那種問題。 03/28 19:33
baobomb:為甚麼不直接用ACTION判斷就好了 03/29 19:00