SBG*_*SBG 5 java multithreading android libjingle webrtc
首先,我不清楚是否适当引用其他代码的链接,如果是这样的道歉并且想了解对于我引用库的这种情况可能有什么更合适的机制(这些链接主要是作为对相关方的引用而提供的) ).
我们有一个用于android的webrtc本机应用程序,在调用peerconnectionfactory的配置时会遇到困难.当用户选择结束活动会话时,我们有一个清理例程,关闭对等连接,然后处理它(虽然关闭并不是必需的,因为对dispose的调用也会在释放其他资源之前关闭连接 - 例如,例如流和本地观察者 - 参见libjingle - talk/app/webrtc/java/src/org/webrtc/PeerConnection.java).在我们的例子中,peerconnectionfactory的创建由通过runnable创建的线程执行,而工厂的处理是从主UI线程执行的.
这是我们遇到问题的地方 - 也就是说,当试图处理peerconnectionfactory时,应用程序崩溃了.
在审查与webRTC演示代码相关的帖子(请参阅https://chromium.googlesource.com/external/webrtc/+/master/webrtc/examples/androidapp/src/org/appspot/apprtc)时,他们似乎没有这个问题.
此外,在查看对等连接工厂实现的本机代码时(请参阅https://code.google.com/p/chromium/codesearch#chromium/src/third_party/webrtc/api/peerconnectionfactory.cc中的 peerconnectionfactory.cc )查看对等连接工厂析构函数的工作线程的展开和删除.
此外,在审查铬webrtc问题列表时,我们看到几个问题(例如https://bugs.chromium.org/p/webrtc/issues/detail?id=3100或4196)让人相信特别关注需要相对于使用peerconnectionfactory时要使用的线程/循环模型.
因此,我的基本问题是,从不同的线程创建peerconnectionfactory时是否存在问题,以及是否存在用于管理peerconnectionfactory的特定线程/循环要求集.
谢谢,
所以,事实证明,该线程不是问题,要最好的,我可以告诉通过代码跟踪等.问题是,我们有这样的实施SDPObserver的PCObserver和DataObserver一些沿着单一的私有类其他逻辑.
结果是,当初始化对等连接时,实现所有观察者(以及其他一些逻辑)的类作为观察者传递,并作为本机观察者记录在libjingle中,因此,调用处理在PeerConnection这导致这就造成了不只是PCObserver被释放(在设的Libjingle peerconnection.dispose()),但因为对我们本土观察员的释放,这是同一个班级,一切都得到了释放 - 导致崩溃时,其他假定班级仍在那里.
因此,返工,独立的私人类每一个观看和正确传递只是适当的观察到PeerConnection等创建(和SDP /为适合于不同的呼叫数据观察者),然后将所有的作品 - 的处置只是释放PCObserver和一切都很好.