Android WebRTC安卓正确挂断

Android WebRTC安卓正确挂断,android,webrtc,Android,Webrtc,我正在尝试创建一个基于的WebRTC应用程序。我有一个网络视图,当我想进行视频通话时,我会启动一个活动并建立一个视频通话,它可以工作,但我无法挂断视频通话并返回到以前的活动。如果关闭或处理peerconnection,则会出现以下错误: “本机线程在没有调用DetachCurrentThread的情况下退出(可能会使用pthread\u key\u create destructor?) 如果我在hangup()中调用finish()以退出活动,则应用程序会崩溃,并出现以下错误: “E/Unca

我正在尝试创建一个基于的WebRTC应用程序。我有一个网络视图,当我想进行视频通话时,我会启动一个活动并建立一个视频通话,它可以工作,但我无法挂断视频通话并返回到以前的活动。如果关闭或处理peerconnection,则会出现以下错误:

“本机线程在没有调用DetachCurrentThread的情况下退出(可能会使用pthread\u key\u create destructor?)

如果我在hangup()中调用finish()以退出活动,则应用程序会崩溃,并出现以下错误:

“E/UncaughtException:java.lang.RuntimeException:无法销毁此对象已发布的活动”

这是我的挂断码:

private void hangup() {
    if (peerConnectionFactory != null) {
        peerConnectionFactory.stopAecDump();
    }
    if(stream !=null) {
        while(stream.audioTracks.size() > 0) {
            AudioTrack audioTrack = stream.audioTracks.get(0);
            stream.removeTrack(audioTrack);
        }
        while(stream.videoTracks.size() > 0) {
            VideoTrack videoTrack = stream.videoTracks.get(0);
            stream.removeTrack(videoTrack);
        }
    }
    if (audioSource != null) {
        audioSource.dispose();
        audioSource = null;
    }
    if (videoCapturerAndroid != null) {
        try {
            videoCapturerAndroid.stopCapture();
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        videoCapturerAndroid.dispose();
        videoCapturerAndroid = null;
    }
    if (videoSource != null) {
        videoSource.dispose();
        videoSource = null;
    }
    if(localPeer!=null) {
        localPeer.close();
        localPeer = null;
    }
    SignallingClient.getInstance().isInitiator=false;
    SignallingClient.getInstance().isChannelReady=false;
    SignallingClient.getInstance().isStarted=false;
}

它现在正在使用以下代码:

private void hangup() {
    try {
        localPeer.close();
        localPeer = null;
        updateVideoViews(false);
        SignallingClient.getInstance().isInitiator=false;
        SignallingClient.getInstance().isChannelReady=false;
        SignallingClient.getInstance().isStarted=false;
        finish();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
此代码注释意味着它可能是库中的一个问题。我真的不太清楚你是应该处理AudioTrack对象还是让它们最终确定。