为什么我的Android应用程序连接了Android Studio profiler会更快?
我正在开发一个android应用程序,它使用DJI Mobile SDK将DJI无人机的视频流发送到ANT媒体服务器。 视频使用RTMP协议和SDK方法进行编码和发送。 将ANT RTMP用于WEBRTC时,由于延迟非常低,我注意到了一个问题:为什么我的Android应用程序连接了Android Studio profiler会更快?,android,dji-sdk,android-profiler,Android,Dji Sdk,Android Profiler,我正在开发一个android应用程序,它使用DJI Mobile SDK将DJI无人机的视频流发送到ANT媒体服务器。 视频使用RTMP协议和SDK方法进行编码和发送。 将ANT RTMP用于WEBRTC时,由于延迟非常低,我注意到了一个问题: 一旦启动流媒体,延迟约为600毫秒 大约2-3秒后,延迟开始线性下降,每3-4分钟损失约1秒 我还使用DJI提供的MobileSDK示例进行了测试,其行为是相同的。 考虑到性能问题,我随后连接了Android Studio Profiler,我注意到
- 一旦启动流媒体,延迟约为600毫秒
- 大约2-3秒后,延迟开始线性下降,每3-4分钟损失约1秒
new Thread() {
@Override
public void run() {
DJISDKManager.getInstance().getLiveStreamManager().setLiveUrl(rtmpUrl);
int result = DJISDKManager.getInstance().getLiveStreamManager().startStream();
DJISDKManager.getInstance().getLiveStreamManager().setStartTime();
}
}.start();
我不知道是什么让你的应用程序在附加了探查器的情况下运行得更快,但我可以确认你提到的东西(线程优先级等)都没有在探查器中实现。我可以列出连接探查器时导致性能开销的一系列因素(设备上的服务器、JVMTI回调等),它们只会降低应用程序的速度,而不是相反
如果不看你的应用程序,我想不出任何解释。如果您喜欢,可以查看Android Studio Profiler的版本。我编辑了这个问题,添加了管理流媒体的代码片段。正如您所看到的,在java方面我能做的不多。供参考的是,整个Java类(来自DJIMobileSDK示例)看起来与分析器没有任何关系。我认为有一件事很有意思,那就是运行应用程序,像以前一样附加分析器,然后单击会话面板中的按钮停止评测,而不停止应用程序。现在观察你的应用程序,看看它是否会退化?