Browse Source

<SIP优化>

weizhengliang 4 years ago
parent
commit
878ec870e7

+ 2 - 1
AmDemo_R/src/com/vvsip/ansip/IVvsipService.java

@@ -17,7 +17,8 @@ public interface IVvsipService {
 	public int StartVvsipLayer();
 	public int StartVvsipLayer();
 	public int StopVvsipLayer();
 	public int StopVvsipLayer();
 	public void initiateOutgoingCall(String target,String macStr);
 	public void initiateOutgoingCall(String target,String macStr);
-    public void addListener(IVvsipServiceListener listener); 
+    public void addListener(IVvsipServiceListener listener);
+    public void clearListener();
     public void removeListener(IVvsipServiceListener listener);
     public void removeListener(IVvsipServiceListener listener);
     public void setAudioNormalMode();
     public void setAudioNormalMode();
     public void setAudioInCallMode();
     public void setAudioInCallMode();

+ 9 - 0
AmDemo_R/src/com/vvsip/ansip/VvsipService.java

@@ -115,6 +115,15 @@ public class VvsipService extends Service implements IVvsipService {
 	}
 	}
 
 
 	@Override
 	@Override
+	public void clearListener() {
+		if (mListeners != null) {
+			synchronized (mListeners) {
+				mListeners.clear();
+			}
+		}
+	}
+
+	@Override
 	public void onCreate() {
 	public void onCreate() {
 		Log.i(mTag, "lifecycle // onCreate");
 		Log.i(mTag, "lifecycle // onCreate");
 		neighborsList = new ArrayList<VvsipNeighbor>();
 		neighborsList = new ArrayList<VvsipNeighbor>();

+ 7 - 2
app/src/main/java/com/wdkl/callingbed/util/SipUtil/SipHelperUtil.java

@@ -155,8 +155,11 @@ public class SipHelperUtil implements EthernetWifiCallBackI {
 //        LogUtil.i(SipInfoTag, "lifecycle // onDestroy");
 //        LogUtil.i(SipInfoTag, "lifecycle // onDestroy");
 
 
         IVvsipService sipservice = VvsipService.getService();
         IVvsipService sipservice = VvsipService.getService();
-        if (contexts instanceof IVvsipServiceListener && sipservice != null) {
-            sipservice.removeListener((IVvsipServiceListener) contexts);
+        //if (contexts instanceof IVvsipServiceListener && sipservice != null) {
+        //    sipservice.removeListener((IVvsipServiceListener) contexts);
+        //}
+        if (sipservice != null) {
+            sipservice.clearListener();
         }
         }
         getSipServiceStartHandler().removeCallbacks(getSipServiceStartRunnable());
         getSipServiceStartHandler().removeCallbacks(getSipServiceStartRunnable());
         sipRegisterHandler.removeCallbacks(sipRegisterRunnable);
         sipRegisterHandler.removeCallbacks(sipRegisterRunnable);
@@ -188,6 +191,7 @@ public class SipHelperUtil implements EthernetWifiCallBackI {
         }
         }
         IVvsipService sipService = VvsipService.getService();
         IVvsipService sipService = VvsipService.getService();
         if (sipService != null) {
         if (sipService != null) {
+            sipService.clearListener();
             sipService.addListener((IVvsipServiceListener) contexts);
             sipService.addListener((IVvsipServiceListener) contexts);
             sipService.setMessageHandler(messageHandler);
             sipService.setMessageHandler(messageHandler);
         } else {
         } else {
@@ -560,6 +564,7 @@ public class SipHelperUtil implements EthernetWifiCallBackI {
                     public void onServiceConnected(ComponentName name, IBinder service) {
                     public void onServiceConnected(ComponentName name, IBinder service) {
                         IVvsipService sipservice = ((VvsipServiceBinder) service).getService();
                         IVvsipService sipservice = ((VvsipServiceBinder) service).getService();
                         if (contexts instanceof IVvsipServiceListener) {
                         if (contexts instanceof IVvsipServiceListener) {
+                            sipservice.clearListener();
                             sipservice.addListener((IVvsipServiceListener) contexts);
                             sipservice.addListener((IVvsipServiceListener) contexts);
 //                            LogUtil.i(SipInfoTag, "Connected!");
 //                            LogUtil.i(SipInfoTag, "Connected!");
                             SipHelperUtil.getInstance(contexts).obtainSipInfo();//Sip信息获取
                             SipHelperUtil.getInstance(contexts).obtainSipInfo();//Sip信息获取