Replace loop-delay in setPowerStateToDesired() with async approach

Issues to be addressed:
The method setPowerStateToDesired() in CdmaServiceStateTracker class sends
a msg to CdmaDataConnectionTracker class to deactive data call, and then starts
a loop which calls SystemClock.sleep() to wait for several seconds.The purpose
of this is to wait for data-disconnection before sending RADIO_POWER off request.
However, the CdmaServiceStateTracker and CdmaDataConnectionTracker are running in
the same process so that the CdmaDataConnectionTracker is not able to process the
message to deactive data before the loop ends.

The patch includes the following changes:
1) In setPowerStateToDesired() in CdmaServiceStateTracker, replace implementation
   of loop-delay by sending a delayed msg to set RADIO_POWER off.

2) In CdmaDataConnectionTracker, when getting EVENT_DISCONNECT_DONE, call a new
   method in CdmaServiceStateTracker to process pending request to turn RADIO_POWER
   off.
3 files changed