我怎么知道我的本机应用程序运行正常并且没有风险?

时间:2019-05-13 20:52:38

标签: react-native

有没有办法知道我们的本机应用程序运行良好?

尽管我知道有一个perf monitor,当我启用Perf Monitor时,有些选项我不知道它们是什么意思。

  1. UI:60.0 fps ==>在我使用我的应用程序时,这里的60.0有时会降低。
  2. 到目前为止已经掺杂了X个==>这里x是我的数字不断增加,甚至达到150,例如:

150 dropped so far

  1. 到目前为止X个口吃(4+)==>这里x也在增加

like:12 stutters (4+) so far

  1. JS:60.0 fps ==>当我使用应用程序时,这里的60.0降低了。

最后,fps本身在本机反应中是什么?

1 个答案:

答案 0 :(得分:1)

FPS表示“每秒帧”。大多数情况下,“流畅”应用应以60fps的速度运行。如今,大多数电话都具有60hz的显示屏(这意味着它们每秒仅刷新60次),因此,只有高端电话才能在一秒钟内显示60帧以上。您可以采取一些措施来确保RN应用以最佳速度运行。

  • 您可能已经知道,跨过“桥梁”(Javascript-> Native)的速度很慢,并且会导致停顿/ FPS降低。那里有很多材料详细解释了这座桥的工作原理,因此我不会在此赘述。尝试最小化在屏幕过渡或动画过程中完成的工作量(特别是跨桥)。您可以使用InteractionManager API来做到这一点。进一步了解here

  • 别忘了阅读Performance上的官方文档。

  • 如果在打开新屏幕后立即注意到延迟,请尝试推迟渲染,直到屏幕完全过渡到视口中为止。如何执行此操作的示例:

import { View, InteractionManager } from 'react-native';

class Example extends Component {
    constructor(props) {
        super(props);

        this.state = { ready: false };
    }

    componentDidMount() {
        // After all interactions have been finished we swich the "ready" state variable to true, and only then your component will be rendered.
        InteractionManager.runAfterInteractions(() => {
            this.setState({ ready: true });
        })
    }

    render() {
        if (!this.state.ready) { 
            return; 
        }

        // Render only when this.state.ready is true (after all interactions have been finalised);
        return (
            <View></View>
        );
    }
}