public void halt() { // modified long time = SystemClock.elapsedRealtime(); int i = 0; for (RegisterAgent ra : ras) { unregister(i); while (ra != null && ra.CurrentState != RegisterAgent.UNREGISTERED && SystemClock.elapsedRealtime() - time < 2000) try { Thread.sleep(100); } catch (InterruptedException e1) { } if (wl[i].isHeld()) { wl[i].release(); if (pwl[i] != null && pwl[i].isHeld()) pwl[i].release(); } if (kas[i] != null) { Receiver.alarm(0, LoopAlarm.class); kas[i].halt(); } Receiver.onText(Receiver.REGISTER_NOTIFICATION + i, null, 0, 0); if (ra != null) ra.halt(); if (uas[i] != null) uas[i].hangup(); if (sip_providers[i] != null) sip_providers[i].halt(); i++; } }