解决“闹钟在通话时不弹出,结束通话后弹出”的问题

     在Android2.3中,当闹钟响起后,AlarmReceiver会收到从底层发出的ALARM_ALERT_ACTION的消息,然后起一个文件名叫AlarmKlaxon的service,以及我们所看到的闹钟界面AlarmAlertFullScreen的Activity。在这个Activity执行onResume的时候,判断是否为通话中,判断方法如下:解决“闹钟在通话时不弹出,结束通话后弹出”的问题_第1张图片

然后再onResume函数中进行判断,如果处于通话状态,将此Task一道后台,代码如下:

解决“闹钟在通话时不弹出,结束通话后弹出”的问题_第2张图片

在后台的Service中启动一个监听器,监听手机挂断的动作,如果用户通话结束,此时会发送一个广播消息,用AlarmReceiver来接收这个消息:

解决“闹钟在通话时不弹出,结束通话后弹出”的问题_第3张图片

当AlarmReceiver收到这个广播后:解决“闹钟在通话时不弹出,结束通话后弹出”的问题_第4张图片

我用的是2.3版本的SDK,没有尝试另外一种方法,3.0以上Android支持ActivityManager.moveTaskToFront()函数。用这个函数应该也可以,如果用这个函数,代码如下:解决“闹钟在通话时不弹出,结束通话后弹出”的问题_第5张图片

这样当通话结束后,之前移到后台的ALARM又会被用户看到。如果有更好的实现方式可以留言讨论,谢谢~


你可能感兴趣的:(android,service,action,手机)