我最初在我已完成的应用程序中注意到了这个问题,但是已经安装了默认的react-native应用程序进行测试,而且我看到即使没有发生任何事情,仍然会在perf监视器中“丢弃到目前为止”数字不断增加。
这个号码应该不断增加吗?
答案 0 :(得分:5)
是的,虽然它并不总是不变的。
(我假设你的意思是在同一个值中保持不变,但如果你只是意味着它永远不会停止,那么你可以忽略它背后的额外额外解释。)
要了解dropped so far
的逻辑,您可以查看React Native codebase。您将在FpsView.java file中找到perf监视器的代码。在其中,您可以看到droppedUIFrames
代码(line 67)使用了哪个变量(dropped so far
)。如果你一直遵循这一点,那么你将进入使用FPSMonitorRunnable
变量的mTotalFramesDropped
类来跟踪到目前为止删除的帧(line 79) 。在这个类中,你只需要一个循环来更新报告的变量。您感兴趣的一行是line 90上的这一行:
mTotalFramesDropped += mFrameCallback.getExpectedNumFrames() - mFrameCallback.getNumFrames();
由此可以看出,是的,这个值是一个简单增加的计数器,但在perf监视器运行时永远不会重置。你也可以看到它不是常数(固定值);在你的情况下,它可能会出现不变,因为你在" hello world"屏幕上没有任何有趣的事情发生。
答案 1 :(得分:3)
基于迈克尔·郑的答案,我更深入研究了RN代码,然后挖掘出设置为16.9的EXPECTED_FRAME_TIME,这是经典的60fps魔术数字。
丢帧计数器不断(即持续)增加的原因是RN希望以60fps的速度运行,并认为任何帧速率低于这意味着丢帧。
然而,用各种"帧速率"测试了这个特定的平板电脑。测试应用程序时,平板电脑的本机帧率似乎是51.9fps。我不知道为什么会这样,这似乎是一个特别随意的数字,但在我的所有测试中,帧速率从未超过52,大部分都是在51。
所以要回答我的问题,"到目前为止已经下降了#34;表示有多少帧小于60fps,并且#34;它应该不断增加?&#34 ;;是的,如果该设备仅能够以低于60fps的速度绘制。