有且仅有三种Call存在:foregroundcall, backgroundcall, ringingcall
Call的基本状态:IDLE,ACTIVE,HOLDING,DIALING,ALERTING,INCOMING,WAITING,
DISCONNECTED,DISCONNECTING
CallList:Dialer侧会维护Call的CallList,如果CallList变更,界面会做出对应的响应操作
在CdmaConnection.java中可以看到
private CdmaCall parentFromDCState (DriverCall.State state) { switch (state) { case ACTIVE: case DIALING: case ALERTING: return owner.foregroundCall; //break; case HOLDING: return owner.backgroundCall; //break; case INCOMING: case WAITING: return owner.ringingCall; //break; default: throw new RuntimeException("illegal call state: " + state); } }
ringingCall:用来管理INCOMING和WAITING的通话
foregroundCall:用来管理DAILING、ALERTING、ACTIVE的通话
backgroundCall:用来管理HOLD的通话