处理PeerConnection WebRTC时的致命信号6

时间:2018-03-06 12:12:54

标签: android webrtc

我正在使用WebRTC语音通话,一切正常。当呼叫挂起时,我会在完成呼叫PeerConnection之前按如下方式处理Activity

 executor.execute(() -> {
        if (peerConnectionFactory != null) {
            peerConnectionFactory.dispose();
            peerConnectionFactory=null;
        }
        if (localPeer != null) {
            localPeer.dispose();
            localPeer=null;
        }
    });

我正在致命信号-6。我看过what-is-fatal-signal-6。它说不要阻止UI线程,这可能导致SIGABRT,因为操作系统会杀死一个无响应的应用程序。但我在非Ui线程上调用它仍然得到问题。

  

致命信号6(SIGABRT)位于0x00007e2f(代码= -6),线程32390(worker_thread)

请研究一下。

1 个答案:

答案 0 :(得分:1)

在关闭peerConnection期间,我做错了。正确的关闭连接流程如下。

 executor.execute(() -> {
            if (peerConnectionFactory != null) {
                peerConnectionFactory.stopAecDump();
            }
            if (localPeer != null) {
                localPeer.dispose();
                localPeer = null;
            }
            if (peerConnectionFactory != null) {
                peerConnectionFactory.dispose();
                peerConnectionFactory = null;
            }
            PeerConnectionFactory.stopInternalTracingCapture();
            PeerConnectionFactory.shutdownInternalTracer();
        });