作者booloo (布鲁)
看板AndroidDev
标题[问题]有办法在handleMessage中实现pause/resume吗?
时间Thu Mar 27 23:31:06 2014
如题,各位板友好,由於我的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://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1395934268.A.D54.html
※ 编辑: booloo 来自: 49.158.102.37 (03/27 23:32)
1F:→ btsken:在电话打来的时候UI不是本来就会停止更新吗? 03/28 13:40
2F:→ booloo:抱歉,是我没讲清楚,是跳Dialog 03/28 19:25
3F:→ booloo:後来後来知道sendMessageDelayed是先送到queue中,一段时 03/28 19:33
4F:→ booloo:间後再执行 03/28 19:33
5F:→ booloo:所以不会产生我描述的那种问题。 03/28 19:33
6F:推 baobomb:为甚麽不直接用ACTION判断就好了 03/29 19:00